XSLT: получение последней даты - PullRequest
6 голосов
/ 26 марта 2009

У меня есть такая структура:

  <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 ]

14 голосов
/ 26 марта 2009

Понял, не так сложно, как я думал, это будет:

        <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"/>
3 голосов
/ 07 декабря 2017

В XSLT 2.0 или более поздней версии вам вообще не нужно сортировать; Вы можете использовать max() ...

<xsl:value-of select="max(//Date/xs:date(.))"/>
3 голосов
/ 06 января 2015

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()]"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...