У меня есть следующие данные, где у меня есть несколько атрибутов: Мне нужно сортировать по дате или по часовой пояс в порядке возрастания. Если ввод содержит разные даты и время, то он должен выходить по возрастанию в течение Datetime. Если вход содержит те же даты и время, что и часовой пояс, он должен выводить по возрастанию в часовую зону.xsl: Сортировать несколько атрибутов
Текущая логика:
<xsl:sort select="@Datetime" order="ascending"/>
<xsl:sort select="@Timezone" order="ascending"/>
ОБРАЗЦА первый сценарий - выход, как и ожидалось:
<MSG>
<DOC>
<Parent>
<Input Id="1234567890" Srvce="RRR" Cd="D1" Datetime="2016-06-16 20:42:30" Timezone="+02:00" EvtRmk="DUMMY 1">
</Input>
<Input Id="1234567890" Srvce="RRR" Cd="D1" Datetime="2016-06-15 20:43:15" Timezone="+04:00" EvtRmk="DUMMY 1">
</Input>
Токовый выход:
<Output>2016-06-15 20:43:15"</Output>
<Output>2016-06-16 20:42:30</Output>
ОБРАЗЦА второй сценарий - Различные Timezone/Same Datetime; выход не отсортирован в Timezone:
<MSG>
</DOC>
<Parent>
<Input Id="1234567890" Srvce="RRR" Cd="D1" Datetime="2016-06-15 20:42:30" Timezone="+04:00" EvtRmk="DUMMY 1">
</Input>
<Input Id="1234567890" Srvce="RRR" Cd="D1" Datetime="2016-06-15 20:43:15" Timezone="+00:00" EvtRmk="DUMMY 1">
</Input>
Выходной ток:
<Output>2016-06-15 20:42:30</Output>
<Output>2016-06-15 20:43:15</Output>
Ожидаемый результат:
<Output>2016-06-15 20:43:15</Output>
<Output>2016-06-15 20:42:30</Output>
Ты говоришь, что хочешь, результат сортировки в абсолютном хронологическом порядке заказ? Это эквивалентно преобразованию всего в UTC сначала и сортировке по метке времени. –
Да, вы правы, его нужно сортировать в хронологическом порядке. –
Ваше ожидание необоснованно: если вы сначала сортируете по дате времени, тогда '2016-06-15 20: 42: 30' всегда будет перед' 2016-06-15 20: 43: 15'. Любая вторичная сортировка будет применяться только в группах, созданных первой сортировкой. –