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 输入中的节点,它不能以任何方式修改输入树。您的输入不包含唯一子元素为 ac 的根元素,因此您不能 select 这样的元素。

为此,您需要 XSLT 或 XQuery。