JavaアプリケーションでXPathを使用しています。「終点」が兄弟と同じ種類ではないノードであるノードのセットを選択するにはどうすればいいですか?例えばXPathを使用してノード範囲を選択
、私は以下の例から、大きさ3と2の<a>
タグの2セットを取得したい:すべての
<sample>
<a />
<a />
<a />
<terminating />
<a />
<a />
</sample>
JavaアプリケーションでXPathを使用しています。「終点」が兄弟と同じ種類ではないノードであるノードのセットを選択するにはどうすればいいですか?例えばXPathを使用してノード範囲を選択
、私は以下の例から、大きさ3と2の<a>
タグの2セットを取得したい:すべての
<sample>
<a />
<a />
<a />
<terminating />
<a />
<a />
</sample>
まず、XPath式の結果は常に、原子値のいずれかです、または単一のノードセット(またはXPath 2.0のシーケンス)を使用します。ノードセットのリストを取得することはできません。 - 私はこのように、ループを記述します(」
/sample/terminating/preceding-sibling::a
/sample/terminating/following-sibling::a
はパベルMinaevの答えに拡張:ちょうど2つのグループと1つのターミネータを使用して、特定のたとえば、あなただけのpreceding-sibling
とfollowing-sibling
を使用することができ、言っ
i
」でループインデックス):
/sample/terminating
の助けを借りて、すべての<terminating>
のノードを見つけますそれらのそれぞれの 、最後<terminating>
ノードに対する見つけるすべて./preceding-sibling::a[count(preceding-sibling::terminating) = {i}]
./following-sibling::a
私はそれがもっと簡単にできると思います - '$ i'を与えれば、'/sample/a [count(preceding-sibling :: termination)= $ i - 1] '' '$ i'番目のグループ。 –
あなたはそうです、これは同じ結果を与えるでしょう。しかし、複雑さはほぼ同じです。 – Tomalak
私はあなたの例を見ることはできません。完全なXMLファイルを投稿してください。 – TahoeWolverine
投稿が修正されました。 @ola_user:次の投稿のために画面の右側にあるエディタのヘルプボックスを見てください。 :) – Tomalak