Как я могу сделать выражение XSLT, которое получает максимальное значение datetime? - PullRequest
1 голос
/ 28 февраля 2012

Я пишу XSLT для обработки этого файла: http://www.unimod.org/xml/unimod.xml

Я хочу найти самый последний атрибут date_time_modified.

1 Ответ

1 голос
/ 28 февраля 2012

Это простое преобразование 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>

при применении к документу XML, содержащемуся в : http://www.unimod.org/xml/unimod.xml (документ содержит почти 23000 строк и не подходит для включения в строку) ...

дает требуемый, правильный результат (дата последнего изменения):

2012-02-15 12:08:24

Заметьте : Никаких специальных манипуляций со строкой даты не требуется (даже преобразование в число), потому что в этом конкретном случае дата находится в «хорошем» формате и может быть просто отсортирована в виде строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...