次の XML 構造があります。
<someSubNodeInXmlFile text="mainListStart">
<a text="text1">
<b text="text2">
<a text="text3">
<c text=""text4/>
</a>
<a text="text5"/>
</b>
</a>
<a text="text6">
<c text="text7"/>
</a>
</someSubNodeInXmlFile>
私の問題は、番号付けについてです。上記の XML は、ネストされたリストとして見ることができます。
番号付けのデフォルトの形式は '1.1.1', level="multiple" です。ただし、リストが 4 回以上入れ子になっている場合は、フォーマットを '1', level="single" に変更する必要があります。
上記の構造の望ましい出力は次のようになります。
1. mainListStart
1.1 text1
1.1.1 text2
1 text3
1 text4
2 text5
1.2 text6
1.2.1 text7
私の意見では、たとえば、現在のノードが最初の場合、現在のノードと親の間の先祖の数を計算する必要があります。計算された数値が 4 未満の場合は、リスト項目の形式として「1.1.1」を使用し、それ以外の場合は形式として「1」を使用します。
私は今いくつかのことを試しましたが、どれもうまくいきませんでした。一般に、現在のノードの祖先の数を計算できますが、これは完全な祖先ツリーを計算しており、特定のノード「someSubNodeInXmlFile」までではありません。
これは単純な xpath 式で可能ですか、それとも current() から始まる再帰テンプレートを使用して数値を計算し、必要な場合は次の祖先を探し、そうでない場合は数値に 1 を追加して次の祖先に進みますか? ?
後者のアイデアはあまりパフォーマンスが高くないことが想像できます (まったく機能する場合)。しかし、最善の解決策は何ですか?
前もって感謝します。
BRgrds、イェンス