ここでの私の質問は、人々にとって少し圧倒されるかもしれないと思うので、チャンクで解決しようとしています.
<xsl:apply-templates mode="sort">
<xsl:sort select="name()"/>
<xsl:sort select="./*"/>
<xsl:sort data-type="text" select="./*[text()]"/>
</xsl:apply-templates>
最初のsort
ステートメント<xsl:sort select="name()"/>
は機能し、理解しています。
2 番目のsort
ステートメントは、私が望んでいることをほぼ正確に実行しているように見えますが、子ノードの を考慮し<xsl:sort select="./*"/>
ていません。なぜこのステートメントが何をしているのかtext()
、私にはよくわかりません。sort
それを追加することは、私の問題を解決するための多くの試みの 1 つに過ぎませんでした。
3 番目のsort
ステートメント<xsl:sort data-type="text" select="./*[text()]"/>
は、2 番目のステートメントが中断したところから取り上げようとする私の試みsort
です。Saxon-HE 9.4を使用すると機能せず、エラーが発生します。
キャッチ: net.sf.saxon.trans.XPathException: 複数のアイテムのシーケンスは、xsl:sort の @select 属性として許可されていません
ここでやろうとしているのは、子要素のテキストに基づいて、兄弟間で親要素を正しく並べ替えることです。
XSLT の重さが私を押しつぶしているので、助けていただければ幸いです。