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の順に返却されます。