[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、同じレベルでさらに進んだものは選択されません。