次のxmlを想像してください
<elements>
<element>
<elementID>0x1000</elementID>
<elementSort>1</elementSort>
<elementName>Master Joda</elementName>
<modifyDate>1979-01-01</modifyDate>
</element>
<element>
<elementID>0x1000</elementID>
<elementSort>1</elementSort>
<elementName>Master Yoda</elementName>
<modifyDate>1979-01-05</modifyDate>
</element>
<element>
<elementID>0x2000</elementID>
<elementSort>2</elementSort>
<elementName>Luke Skywalker</elementName>
<modifyDate>1979-01-08</modifyDate>
</element>
</elements>
次の xslt を使用して、一意の ID のリストを変数に選択します
<xsl:variable name="ids"
select="elements/element/elementID[not(.=following::elementID)]" />
次に、xslt に各 ID の HTML を作成させます (出力は、ID ごとの要素の水平方向のリストになります)。
<xsl:for-each select="$ids">
<xsl:variable name="elementID" select="." />
<div class="itemContainer clear" style="width:{$containerWidth}">
<xsl:for-each select="/elements/element[elementID=$elementID]">
<xsl:sort select="modifyDate" />
<xsl:call-template name="elementTemplate" />
</xsl:for-each>
</div>
</xsl:for-each>
問題は、リスト自体 (ID リスト) で並べ替えたい要素を持たずに、for-each ネスト (ID) の最初のレベルで要素を並べ替えるにはどうすればよいかということです。
実際には、elementSort 1 がマスターを意味し、elementSort 2 が生徒を意味し、各行に階層ごとに複数の要素があり、modifyDate によって並べ替えられる場合、Jedi 階層 (マスター -> 生徒) で並べ替えるにはどうすればよいですか。