最も近い祖先が適切な属性値を持つすべてのノードを選択し、最も近い祖先が明示的な「選択しない」属性値を持つノードを選択しないように、正しいxpath式を探しています。視覚的に説明:各ブランチについて、ルートへのパスをたどります。特定の属性が最初に検出されたときに、それが選択に含まれるかどうかを判断する必要があります。
<xyz select="yes">
<blabla>this one's in</blabla>
<qwerty select="no">this one's out
<foobar>out please!</foobar>
<gettingoutofnames select="yes">in again!</gettingoutofnames>
</qwerty>
</xyz>
例は、XML構造のどこにでも発生する可能性があります。
要素の名前は何でもかまいません。'select="yes"'と'select= "no"'は任意の順序で続けることができますが、最も深いものがその子孫を決定します。
私はこのようなことを考えています:
//*[@select="yes"]//ancestor::*[not(@select="no")]
しかし、それだけでは不十分です。どんな助けでも大歓迎です!