我正在尝试显示仅返回的最新项目。
我有以下代码:
<xsl:choose>
<xsl:when test="(count(Customer/TABLE[@NAME='T1']/TABLE[@NAME='T2']/TABLE[@NAME='T3']/TABLE[@NAME='T4']/RECORDS/RECORD) >= 1)">
<xsl:for-each select="Customer/TABLE[@NAME='T1']/TABLE[@NAME='T2']/TABLE[@NAME='T3']/TABLE[@NAME='T4']/RECORDS/RECORD">
<xsl:sort select="COLUMN[@NAME='DATE_START']/@VALUE" order="ascending"/>
<xsl:if test="position() = last()">
<tr>
<td class="alltext" style="text-align:center;">
<xsl:value-of select="COLUMN[@NAME='DATE_START']/@VALUE" />
</td>
<td class="alltext" style="text-align:center;">
<xsl:value-of select="COLUMN[@NAME='STATUS']/@VALUE_DESCRIPTION" />
</td>
<td class="alltext" style="text-align:center;">
<xsl:value-of select="COLUMN[@NAME='REASON']/@VALUE_DESCRIPTION" />
</td>
<td class="alltext" style="text-align:center;">
<xsl:value-of select="COLUMN[@NAME='TRUSTED']/@VALUE_DESCRIPTION" />
</td>
</tr>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
它始终显示1个结果,但并不总是显示最新结果。
数据库中的字段数据类型是datetime,但我猜它是按文本字符串排序。
我在寻找转换为日期的解决方案后尝试过:
<xsl:variable name="dt" as="xs:dateTime" select="xs:dateTime(COLUMN[@NAME='DATE_START']/@VALUE)"/>
<xsl:sort select="format-dateTime($dt, '[Y0001]/[M01]/[D01]')" order="ascending"/>
取代:
<xsl:sort select="COLUMN[@NAME='DATE_START']/@VALUE" order="ascending"/>
但我收到错误:
发生错误
转换文档时出现以下错误
XSLT编译错误(803,29)。
第803行是:
<xsl:variable name="dt" as="xs:dateTime" select="xs:dateTime(COLUMN[@NAME='DATE_EMP_STAT_APP']/@VALUE)"/>
任何帮助都非常感激。
我可能要离百万英里......
XSLT Version 1
非常感谢