如何将元素节点转换为 xquery 中的文档
How to convert a element node to document in xquery
我有一个xml。
let $a := <a>
<b>asd</b>
<c>bvn</c>
</a>
如果我给 return $a/a/b
它不起作用,因为这是一个元素节点。
所以我需要将元素节点转换为文档节点。为了让它发挥作用。
我无法更改 xpath
。无论如何,他们是否通过使用相同的 xpath
'/a/b' 来获得结果?
如果需要,您可以创建文档节点
let $a := <a>
<b>asd</b>
<c>bvn</c>
</a>
let $a := document{$a}
return $a/a/b
或直接
let $a := document {
<a>
<b>asd</b>
<c>bvn</c>
</a>
}
return $a/a/b
我不认为将 xml 包装在 document node
中是您正在寻找的解决方案。您希望它出现在文档节点中有什么具体原因吗?
您真正需要的只是多一层 xml,然后您的 xpath 就可以正常工作了。您可以选择任何元素作为动态生成的 xml 的根,例如:
let $a := <wrapper>
<a>
<b>ABC</b>
<c>XYZ</c>
</a>
</wrapper>
return $a/a/b
(: This will return the element <b>ABC</b> :)
我建议不要将其包装在文档节点中,除非您有非常具体的原因。根据您上面列出的要求,您不需要。所以我只是坚持将你的 $a xml
包裹在 xml 节点的更多层中。
我有一个xml。
let $a := <a>
<b>asd</b>
<c>bvn</c>
</a>
如果我给 return $a/a/b
它不起作用,因为这是一个元素节点。
所以我需要将元素节点转换为文档节点。为了让它发挥作用。
我无法更改 xpath
。无论如何,他们是否通过使用相同的 xpath
'/a/b' 来获得结果?
如果需要,您可以创建文档节点
let $a := <a>
<b>asd</b>
<c>bvn</c>
</a>
let $a := document{$a}
return $a/a/b
或直接
let $a := document {
<a>
<b>asd</b>
<c>bvn</c>
</a>
}
return $a/a/b
我不认为将 xml 包装在 document node
中是您正在寻找的解决方案。您希望它出现在文档节点中有什么具体原因吗?
您真正需要的只是多一层 xml,然后您的 xpath 就可以正常工作了。您可以选择任何元素作为动态生成的 xml 的根,例如:
let $a := <wrapper>
<a>
<b>ABC</b>
<c>XYZ</c>
</a>
</wrapper>
return $a/a/b
(: This will return the element <b>ABC</b> :)
我建议不要将其包装在文档节点中,除非您有非常具体的原因。根据您上面列出的要求,您不需要。所以我只是坚持将你的 $a xml
包裹在 xml 节点的更多层中。