Вывести один из нескольких тегов, сравнивая их по дате во вложенном элементе

Есть xml вида:

<tag>
    ...
    <date>2022-11-16</date>
    ...
</tag>
<tag>
    ...
    <date>2022-11-17</date>
    ...
</tag>

Прошу подсказать какими средствами XSLT воспользоваться, чтобы выбирался только тот тег, в котором дата в элементе была бы самой свежей? Тегов tag может быть от одного, до бесконечности. Спасибо!


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Полезные XSLT фрагменты.

XSLT 1.0

<!--Получите последнюю дату и поместите ее в переменную-->
<xsl:variable name="latest_date">
    <xsl:for-each select="tag">
        <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_date"/>
    
<!--Чтобы использовать переменную-->
/root/tag/date[text()=$latest_date]
→ Ссылка