次のように、さまざまな属性を持つ一連の要素があります。
<?xml version="1.0" encoding=utf-8"?>
<root>
<elem at="4" iterate="third" />
<foo/>
<elem at="1" iterate="first" />
<bar/>
<elem start="3" end="9" iterate="second" />
</root>
elem
タグを繰り返し処理したいので、次のように指定しましたfor-each
。
<xsl:for-each select="/root/elem">
ここまではうまくいきましたが、今度はこれらの要素をandフィールドに従って並べ替えたいと思います。タグを反復処理する方法を属性に注釈を付けました(ここではわかりやすくするため)。@at
@start
elem
@at
@start
@iterate
私のアプローチはこれでした
<xsl:sort select="@at or @start" data-type="number" order="ascending" />
@at
しかし、属性を持つ要素が属性を持つ要素よりも優先されるように見えるため、意図したとおりに機能しないよう@start
です。
では、設定されている属性の名前を区別せず、それぞれの値に従って単純にソートするように XSLT (1.0) に指示するにはどうすればよいでしょうか?