子ノード(H、W、P)をランダムな順序で含むノード(Z)を含むXMLファイルがあります。
<X>
<Y>
<Z>
<H>Hello</H>
<W>World</W>
<P>!</P>
</Z>
<Z>
<P>!</P>
<W>World</W>
<H>Hello</H>
</Z>
</Y>
</X>
そして、子ノードのコンテンツを指定された順序で選択したいと思います。
私はこれを結びました:
/X/Y/Z/*[self::H or self::W or self::P]/text()
しかし、これは間違った順序を維持します:
Hello World !
! World Hello
Hを基準にしてWとPを順番に選択する方法が必要です。どうやってやるの?
私はこれを試しました:
/X/Y/Z/(H,W,P)/text()
しかし、順序はまだ間違っています。
編集:質問は、テキスト部分だけが必要であるが、テキストだけでなくノードも必要であることを示唆しています。その理由は、XPath text()関数にCDATAセクションの問題があるように思われるためです。