Сравните дату по юлианскому календарю в XSLT

У меня есть требование, когда я должен узнать самую последнюю дату и время по юлианскому календарю из списка дат с помощью XSLT.

Если я передам приведенный ниже XML

Вход:

<Orders>
<Order>
<OrderNumber>100</OrderNumber>
<Date>116256</Date>
</Order>
<Order>
<OrderNumber>101</OrderNumber>
<Date>116256</Date>
</Order>
<Order>
<OrderNumber>102</OrderNumber>
<Date>116276</Date>
</Order>
</Orders>

Выход:

<Result>
<Date>116256</Date>
</Result>

Пожалуйста, помогите мне с XSLT.

Спасибо, Ятан.


person Yatan    schedule 12.10.2016    source источник
comment
Какой формат ваших свиданий? Мне они не кажутся чем-то юлианским. И почему 116256 самая последняя, ​​а не 116276? -- Также укажите, какую версию XSLT вы можете использовать.   -  person michael.hor257k    schedule 12.10.2016
comment
Юлианский день 116276 — это 7 мая 4395 года до нашей эры.   -  person Michael Kay    schedule 12.10.2016


Ответы (1)


Предполагая, что ваши «даты» являются числами, и что эти числа увеличиваются с течением времени, вам нужно только отсортировать заказы по дате, по убыванию, и получить дату первого:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/Orders">
    <Result>
        <xsl:for-each select="Order">
            <xsl:sort select="Date" data-type="number" order="descending"/>
            <xsl:if test="position()=1">
                <xsl:copy-of select="Date"/>
            </xsl:if>
        </xsl:for-each>
    </Result>
</xsl:template>

</xsl:stylesheet>

Применительно к вашему примеру ввода результат будет таким:

<?xml version="1.0" encoding="UTF-8"?>
<Result>
   <Date>116276</Date>
</Result>

Это не тот результат, который у вас есть в вашем вопросе, но в соответствии с предположениями, изложенными выше, он правильный.

person michael.hor257k    schedule 12.10.2016