これは簡単な質問ですが、わかりません。 次の簡単なXMLドキュメント考えてみましょう:XPathの選択から特定の要素を除外する
<root>
<a></a>
<b></b>
<c></c>
<a></a>
<d></d>
<e></e>
<a></a>
<a></a>
</root>
をXPathを使用して<e>
を通じてノード<b>
を選択するための最良の方法は何ですか?
私は
これは簡単な質問ですが、わかりません。 次の簡単なXMLドキュメント考えてみましょう:XPathの選択から特定の要素を除外する
<root>
<a></a>
<b></b>
<c></c>
<a></a>
<d></d>
<e></e>
<a></a>
<a></a>
</root>
をXPathを使用して<e>
を通じてノード<b>
を選択するための最良の方法は何ですか?
私は
/root/*[not(self::a)]
これはXPointerとXIncludeを使用する場合にも機能します。 –
は、あなたが試している(トリックを行いません)
/root/*[not(a)]
ような何かを探しています:
/ルート/ B | /ルート/ C |ルート/ d |/root/e
私は、select = "* [not(self :: abc)] [not(self :: def)それが私がそれを実装した方法です。残念ながら、不明な名前を持つ他のノードがある可能性があります。 – user123444555621
これは古い質問ですが、私は最近同様の問題に遭遇し、次のxpathを使用しましたそれを解決するために:
/root/*[not(name()='a')]
は、XPath 2.0でそれを追加するために答え、あなたがexcept
を使用することができます。
/root/(* except a)
のXPath 1.0の場合は、Tomalakは指摘し、これはそれを行うための標準的な方法は次のとおりです。
/root/*[not(self::a)]
ところで、xsl:template/@match
属性のXSLT 2.0でこれを使用しようとする人がここに着くと、@match
はのようなXPath式は、ではなく、のXPath式です。この場合、XPath 1.0のソリューションが有効です。
複数の要素を除外するにはどうすればよいですか? – lwpro2
これはまた複数の要素を除外するようにも働くはずです[abcまたはdefでない] – novice