XML文書中の複数の要素ノードまたはその要素ノードの属性ノードの値でソートすることができます。ソート式に“,”で区切って複数のキー指定を指定します。それぞれのキー指定は、数値でも文字列でもかまいません。
複数のキー指定を指定することで、検索するXML文書を属性ノード1の値の昇順に並べ、もし属性ノード1の値が同じであった場合は、属性ノード2の値の昇順に並べるといったソートが可能になります。
キー指定は8個まで指定できます。
例として以下の文書があるものとします。
文書A
<doc>
<basic date="2006年03月03日" expense="7650円">
:
</basic>
:
<detail>
:
<hotel>9600円</hotel>
:
</detail>
</doc>文書B
<doc>
<basic date="2006年03月03日" expense="11500円">
:
</basic>
:
<detail>
:
<hotel>8900円</hotel>
:
</detail>
</doc>文書C
<doc>
<basic date="2006年03月10日" expense="7650円">
:
</basic>
:
<detail>
:
<hotel>14090円</hotel>
:
</detail>
</doc>出張日(date)の順で、同じ出張日(date)である場合は宿泊費(hotel)が高い順(降順)となるようにソートします。
/doc/basic/@date,val(/doc/detail/hotel/text()) DESC
結果:文書A、B、Cの順に返却されます。
出張日(date)の順で、同じ出張日(date)である場合は出張費用(expense)が高い順(降順)となるようにソートします。
/doc/basic/@date,val(/doc/basic/@expense) DESC
結果:文書B、A、Cの順に返却されます。