[1]
間違ったノードで述語を使用しています。特定のレベルでpreciding-sibling::a
最初の要素に続くすべての入力ではなく、を含む最初の入力が必要です。a
これにより、正しい結果が得られるはずです。
//a/following-sibling::input[1]/@value
つまりa
、ドキュメント内の任意のレベルで見つかったすべての要素input
について、その兄弟でありながら、それに続く最初の要素を選択します。次に、そのvalue
属性を読み取ります。
この入力の場合:
<xml>
<p>
<input value="value A" />
<a href="http://www.link.com">link</a>
<input value="value B" />
<input value="value C" />
</p>
<p>
<a href="http://www.link.com">link</a>
<input value="value D" />
<input value="value E" />
<a href="http://www.link.com">link</a>
<input value="value F" />
</p>
</xml>
それは戻ります:
編集
a
これは、とそれに続く最初の要素の間に要素がない場合に機能input
します。
たとえば、次のような入力を使用します。
<a href="http://www.link.com">link</a>
<strong>OMG NOEZ!</strong>
<input value="value A" />
値Aはまだ選択されています
よろしければ、上記の式をそのままにしてください。そうでない場合は、次のように変更して、他の要素をフィルタリングします。
//a/following-sibling::*[1][self::input]/@value
a
これにより、タグが何であるかに関係なく、の最初の次の兄弟が選択され、選択された後にのみ実際のタグがチェックされます。このようにinput
、同じレベルでさらに進んだものは選択されません。