0
私は複数の属性を持つ以下のデータを持っています。 日時または時間帯の昇順で並べ替える必要があります。 入力に異なるDatetimeと同じTimezoneが含まれている場合は、Datetimeごとに昇順で出力されます。 入力に同じ日時と異なるタイムゾーンが含まれている場合は、タイムゾーンごとに昇順で出力する必要があります。xsl:複数の属性を並べ替え
現在のロジックは: -
<xsl:sort select="@Datetime" order="ascending"/>
<xsl:sort select="@Timezone" order="ascending"/>
SAMPLEの第一のシナリオ出力が期待通りである:
<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>
SAMPLE第二のシナリオ - 異なるタイムゾーン/同じ日時;出力は、タイムゾーンごとにソートされていない:
<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>
予想される出力:XSLT 1.0で
<Output>2016-06-15 20:43:15</Output>
<Output>2016-06-15 20:42:30</Output>
はあなたが絶対的な時系列で並べ替えの結果をしたいと言っています注文?これは、すべてをUTCに最初に変換し、タイムスタンプでソートするのと同じです。 –
はい、正しいです、それは時系列順にソートする必要があります。 –
あなたの期待は根拠がありません。まずdatetimeでソートすると、 '2016-06-15 20:42:30'は常に' 2016-06-15 20:43:15'の前に来ます。セカンダリソートは、最初のソートで作成されたグループ内でのみ適用されます。 –