是否可以使用纯 XPath 2.0表达式来选择节点并保持源XML文档的层次结构?
示例源XML实例文档:
<persons>
<person name='Joe' age='26'>
<project name='dom4j' language='java'/>
<project name='underscore' language='javascript'/>
<project name='ember' language='javascript'/>
</person>
<person name='Jane' age='23'>
<project name='dom4j' language='java'/>
</person>
<person name='Kevin' age='15'>
<project name='myMMORPG' language='php'/>
<project name='struts2' language='java'/>
</person>
</persons>
所以我想得到一个纯XPath表达式的结果,如:
<persons>
<person name='Joe' age='26'>
<project name='dom4j' language='java'/>
</person>
<person name='Jane' age='23'>
<project name='dom4j' language='java'/>
</person>
</persons>
这很容易与XSLT有关,但我很好奇,如果可以通过纯 XPath 2.0表达式实现这一点。我不相信,因为我知道XPath本身没有创建新节点的表达式。有人可以证实这一点吗?
答案 0 :(得分:0)
关于你的问题&#34;是否可以使用纯XPath 2.0表达式来选择节点并保持源XML文档的层次结构?&#34;,我会回答是的,你用XPath做的选择2.0返回原始输入文档中的节点,完整的结构未被更改,这意味着所选节点将其保留为子节点,祖先和兄弟节点。然而,你想要的结果似乎确实只想保留儿童和祖先,而不是兄弟姐妹。要实现这一点,您确实需要XSLT或XQuery并返回仅包含您感兴趣的节点的新文档。