2009-07-30 12 views
0

JavaアプリケーションでXPathを使用しています。「終点」が兄弟と同じ種類ではないノードであるノードのセットを選択するにはどうすればいいですか?例えばXPathを使用してノード範囲を選択

、私は以下の例から、大きさ3と2の<a>タグの2セットを取得したい:すべての

<sample> 
    <a /> 
    <a /> 
    <a /> 
    <terminating /> 
    <a /> 
    <a /> 
</sample> 
+0

私はあなたの例を見ることはできません。完全なXMLファイルを投稿してください。 – TahoeWolverine

+0

投稿が修正されました。 @ola_user:次の投稿のために画面の右側にあるエディタのヘルプボックスを見てください。 :) – Tomalak

答えて

1

まず、XPath式の結果は常に、原子値のいずれかです、または単一のノードセット(またはXPath 2.0のシーケンス)を使用します。ノードセットのリストを取得することはできません。 - 私はこのように、ループを記述します(」

/sample/terminating/preceding-sibling::a 
/sample/terminating/following-sibling::a 
0

はパベルMinaevの答えに拡張:ちょうど2つのグループと1つのターミネータを使用して、特定のたとえば、あなただけのpreceding-siblingfollowing-siblingを使用することができ、言っ

i」でループインデックス):


  • /sample/terminatingの助けを借りて、すべての<terminating>のノードを見つけますそれらのそれぞれの 、最後<terminating>ノードに対する見つけるすべて
    ./preceding-sibling::a[count(preceding-sibling::terminating) = {i}]
  • は、また、見つける
    ./following-sibling::a
+1

私はそれがもっと簡単にできると思います - '$ i'を与えれば、'/sample/a [count(preceding-sibling :: termination)= $ i - 1] '' '$ i'番目のグループ。 –

+0

あなたはそうです、これは同じ結果を与えるでしょう。しかし、複雑さはほぼ同じです。 – Tomalak

関連する問題