XSLT:获取最新日期

时间:2009-03-26 08:07:33

标签: xml xslt sorting

我有这样的结构:

  <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)。

3 个答案:

答案 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(.))"/>