如何创建获取最大日期时间值的XSLT表达式?

时间:2012-02-27 20:17:38

标签: xml xslt

我正在编写一个XSLT来处理这个文件: http://www.unimod.org/xml/unimod.xml

我想找到最新的date_time_modified属性。

1 个答案:

答案 0 :(得分:1)

这个简单的XSLT 1.0转换

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:umod="http://www.unimod.org/xmlns/schema/unimod_2"
 >
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:for-each select="/*/umod:modifications/umod:mod">
    <xsl:sort select="@date_time_modified" order="descending"/>

    <xsl:if test="position() = 1">
     <xsl:value-of select="@date_time_modified"/>
    </xsl:if>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

应用于 http://www.unimod.org/xml/unimod.xml 中包含的XML文档时(该文档有近23000行并且不适合包含内联)...

生成所需的正确结果(最新修改日期):

2012-02-15 12:08:24

请注意:不需要对日期字符串进行特殊操作(甚至转换为数字),因为在这种特定情况下,日期采用“良好”格式,并且可以简单地按字符串排序。