XPath 表达式 select 排除一个元素的完整文档
XPath expression to select the complete document excluding one element
我有一个 XML 文档
<root>
<a>Foo</a>
<b>Bar</b>
<c>Baz</c>
</root>
并且需要一个XPath 1.0查询来获取整个文档排除<b>
元素,如下:
<root>
<a>Foo</a>
<c>Baz</c>
</root>
我试过 *[not(self::b)]
但这只是给了我原始文档, *[not(ancestor-or-self::b)]
.
也是如此
查询 /root/*[not(self::b)]
和 /root/*[not(ancestor-or-self::b)]
按预期工作以排除元素,但省略了我们需要的父根元素。
<a>Foo</a>
<c>Baz</c>
如有任何关于如何实现这一目标的建议,我们将不胜感激。
XPath 只能 select 输入中的节点,它不能以任何方式修改输入树。您的输入不包含唯一子元素为 a
和 c
的根元素,因此您不能 select 这样的元素。
为此,您需要 XSLT 或 XQuery。
我有一个 XML 文档
<root>
<a>Foo</a>
<b>Bar</b>
<c>Baz</c>
</root>
并且需要一个XPath 1.0查询来获取整个文档排除<b>
元素,如下:
<root>
<a>Foo</a>
<c>Baz</c>
</root>
我试过 *[not(self::b)]
但这只是给了我原始文档, *[not(ancestor-or-self::b)]
.
查询 /root/*[not(self::b)]
和 /root/*[not(ancestor-or-self::b)]
按预期工作以排除元素,但省略了我们需要的父根元素。
<a>Foo</a>
<c>Baz</c>
如有任何关于如何实现这一目标的建议,我们将不胜感激。
XPath 只能 select 输入中的节点,它不能以任何方式修改输入树。您的输入不包含唯一子元素为 a
和 c
的根元素,因此您不能 select 这样的元素。
为此,您需要 XSLT 或 XQuery。