假设我有以下XML
<a>
<b></b>
<c></c>
<d></d>
<e></e>
</a>
如果我想要除 d 之外的所有 a 的孩子。为此,我会使用以下内容:
/a/*[not(self::d)]
但是,这会在三个单独的节点中返回 b , c 和 e 。我要找的只是一个节点,包含 b , c 和 e ,不包括 d 。这将是以下伪代码的类似内容:
/a/* and <do not include /a/d please>
这可能吗?
感谢。
答案 0 :(得分:2)
XPath - 无论是版本1.0,2.0或3.0 - 只能查询子树而且无法修改(包括删除)或构造新元素。
您必须为此目的使用XQuery或XSLT,或者在查询语言之外修改文档并仅使用XPath选择结果子树,然后使用另一个XPath选择您不想要的节点并将其从导致你正在使用的编程语言。