我有这样的结构:
<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>
Run Code Online (Sandbox Code Playgroud)
我想使用XSLT获取最新日期(在此示例中为2009-04-22).
Min*_*ras 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"/>
Run Code Online (Sandbox Code Playgroud)
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()]"/>
Run Code Online (Sandbox Code Playgroud)
在 XSLT 2.0 或更高版本中,您根本不需要排序;你可以用max()
...
<xsl:value-of select="max(//Date/xs:date(.))"/>
Run Code Online (Sandbox Code Playgroud)