在xslt 1.0

时间:2015-08-18 11:55:15

标签: xml xslt-1.0

我在xslt1.0中有一个变量,它包含带分隔符的日期 &#34 ;; 2015年8月11日11:16; 2015年8月7日08:27; 2015年8月12日15:14" 我想将此变量值标记化并获取最新日期并将其存储在变量中。有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

Xalan支持EXSLT str:tokenize()功能,因此可以解决这个问题。之后,您只需按个别日期和时间对令牌进行排序。时间组件,抓住最后一个。

<xsl:for-each select="str:tokenize($dates, ';')">
    <!-- sort by year -->
    <xsl:sort select="substring(., 9, 4)"/>
    <!-- sort by month -->
    <xsl:sort select="string-length(substring-before('JanFebMarAprMayJunJulAugSepOctNovDec', substring(., 1, 3)))" data-type="number"/>
    <!-- sort by day -->
    <xsl:sort select="substring(., 5, 2)"/>
    <!-- sort by time -->
    <xsl:sort select="substring(., 14, 4)"/>
    <xsl:if test="position()=last()">
        <xsl:value-of select="."/>
    </xsl:if>
</xsl:for-each>

请注意,如果您的日期不是全部采用相同的格式(在您的输入中,最后一个日期在月份和日期之间没有空格),则此功能无效。