我有这样的结构:
<Info ID="1">
...
<Date>2009-04-21</Date>
</Info>
<Info ID="2">
...
<Date>2009-04-22</Date>
</Info>
<Info ID="3">
...
<Date>2009-04-20</Date>
</Info>
我想使用XSLT获取最新日期(在此示例中为2009-04-22)。
答案 0 :(得分:14)
想出来,并不像我想象的那么难:
<xsl:variable name="latest">
<xsl:for-each select="Info">
<xsl:sort select="Date" order="descending" />
<xsl:if test="position() = 1">
<xsl:value-of select="Date"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$latest"/>
答案 1 :(得分:3)
XSLT 2.0+:我们想要在不单独处理元素的情况下对元素进行排序时使用<xsl:perform-sort>
。 <xsl:sort>
用于按排序顺序处理元素。由于您只想要这种情况下的最后日期,因此您无需处理每个<Info>
元素。使用<xsl:perform-sort>
:
<xsl:variable name="sorted_dates">
<xsl:perform-sort select="Info/Date">
<xsl:sort select="."/>
</xsl:perform-sort>
</xsl:variable>
<xsl:value-of select="$sorted_dates/Date[last()]"/>
答案 2 :(得分:3)
在XSLT 2.0或更高版本中,您根本不需要排序;你可以使用max()
...
<xsl:value-of select="max(//Date/xs:date(.))"/>