我遵循了 xml
<element id="1">
<choice>
<sequence>
<element id="11">
<group>
<element id="111">
<!-- ... -->
</element>
</group>
</element>
<element id="12">
<element id="121">
<!-- ... -->
</element>
</element>
</sequence>
</choice>
</element>
在当前<element>
和子节点之间,<element>
节点可以是<choice>
、<sequence>
和<group>
节点的任意组合。或者他们可能不是。如何获取当前<element>
中的所有直接后代<element>
节点,但没有作为其后代的<element>
节点。
在<element>
节点之一的上下文中,我想写一些类似的东西:./(choice|sequence|group)*/element
但它不起作用:(
我认为您只能通过再次使用选择"根"元素的 xpath 来解决它。例如,如果通过 xpath 选择它//element[@id="1"]
则
.//element[ancestor::element[1] = //element[@id="1"]]
选择所需的内容。它会找到element
它和"根"之间没有其他element
您可以在那里测试它 - https://eval.in/781145 设置 id = 1,id = 12 ....
我不确定我是否正确理解了这个问题......试试下面的表达式XPath
让我知道它是否不是你想要的:
./*[self::choice or self::sequence or self::group]/element