XSLT按日期排序显示最近的问题

时间:2017-08-11 12:19:00

标签: xml xslt

我正在尝试显示仅返回的最新项目。

我有以下代码:

<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

非常感谢

0 个答案:

没有答案
相关问题