別のノードの名前を含むノードを見つけるにはどうすればよいですか?
たとえば、<a>
存在し<b>
、テキスト「a」が含まれている場合は選択したいのですが、指定さ<b>
れた名前が存在しない場合は選択しません。
<root>
<a /> <!-- Do not care what is in this for now -->
<b>a</b> <!-- Find this node only -->
<b>c</b> <!-- This node is unwanted -->
</root>
私は効果的に比較name()
してtext()
値を付けることができることを知っています。以下は、自分自身を参照し、他のノードを除外するノードを見つけます。
*[name() = text()]
text()
このクエリではコンテキストが間違っているため、他の参照を検索しようとして失敗します。
b[../*[name() = text()]]
上記<b>
は、自分の名前を含む兄弟が少なくとも1つある場合、おそらく存在する場合は、単にすべてを返します<a>a</a>
。
ノードのテキストを名前のコレクションと比較する必要があります。これは私が探しているものであるはずですが*/name()
、構文エラーをスローします:
b[text() = ../*/name()]