アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも勉強させていただいております。
今回は質問をさせていただけないでしょうか。

下記のような、XMLファイルがあります。

<?xml version="1.0" encoding="Shift_JIS"?>
<article>
<Data>
<Name Num="2">佐藤</Name>
</Data>
<Data>
<Name Num="1">三田</Name>
</Data>
<UserMain>
<UserMainData>
<User>
<NAMAE>伊藤</NAMAE>
<No>6</No>
</User>
<User>
<NAMAE>加藤</NAMAE>
<No>3</No>
</User>
</UserMainData>
</UserMain>
</article>

NumもしくはNoを使ってソートしたいと思っています。
つまり、下記のような出力を望んでいます。
1 三田
2 佐藤
3 加藤
6 伊藤

下記のような、感じで指定できれば一発でできると思うのですが
難しいようです。
<xsl:for-each select="Data/Name|UserMain/UserMainData/User/NAMAE">
<xsl:sort select="@Num|No" />
....
</xsl:for-each>

つまり、複数のノードを違う属性でソートする方法です。
どなたか、良い知恵を教えていただけないでしょうか?
残念な事に、XMLの内容を変更することはできません。

それでは、よろしくお願いします。

A 回答 (1件)

×<xsl:sort select="@Num|No" />


<!--
これは NAMAE要素の子のNo要素、つまり
<NAMAE>加藤<No>3</No></NAMAE>
これなら多分ヒットする。
-->
というわけで変えてみた。
○<xsl:sort select="@Num|following-sibling::No" data-type="number" />
こっちの都合でdata-type属性まで付けてみた。他の属性をどうするかはお好みで。
#多分@Numもfollowing-sibling::Noもどちらもある要素の場合は@Numの方がノードリスト中で先に出てくるので,@Numの方が優先されると思う。多分。自信ないけど。
http://www.w3.org/TR/xslt#element-sort
    • good
    • 0
この回答へのお礼

ありがとうございました。
なんとか実現ができました。
今後ともよろしくお願いいたします。

お礼日時:2009/06/02 14:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!