我想搜索没有特定元素的文档或没有子节点的元素(甚至是文本节点),该元素应该有一个特定的父节点。
例如:
示例xmls:
<root>
<id>123</id>
<root2>
<number>1234</number>
</root2>
</root>
<root>
<id>123</id>
<root2>
<issue/>
<number>1234</number>
</root2>
</root>
<root>
<id>123</id>
<root2>
<volume/>
<number>1234</number>
</root2>
</root>
<root-second>
<id>123</id>
<root2>
<volume/>
<issue/>
<number>1234</number>
</root2>
</root-second>
<root-second>
<id>123</id>
<root2>
<volume/>
<issue/>
<number>1234</number>
</root2>
</root-second>
新文档:
<root>
<id>123</id>
<root2>
<volume>233</volume>
<number>1234</number>
</root2>
</root>
<root>
<id>123</id>
<root2>
<volume>233</volume>
<issue>233</issue>
<number>1234</number>
</root2>
</root>
<root>
<id>123</id>
<root2>
<issue>233</issue>
<number>1234</number>
</root2>
</root>
现在我希望<id>
中<root>
的所有xmls 123 且<root2>
可以有空<issue>, <volume>
个元素或元素完全存在。
与上述情况一样,它不应该以{{1}}为根返回xmls。
它应该以{{1}}为根
返回所有xmls答案 0 :(得分:1)
假设每个XML都在自己的文档中,您应该可以通过以下方式执行此操作:
cts:search(
fn:doc(),
cts:element-query(
xs:QName("root"),
cts:element-value-query(xs:QName("id"), "123")
)
)
我对您的问题并不完全清楚,但我认为您可能也希望要求root2
存在于root下,无论它包含什么。如果是这样的话,那么:
cts:search(
fn:doc(),
cts:element-query(
xs:QName("root"),
cts:and-query((
cts:element-value-query(xs:QName("id"), "123"),
cts:element-query(xs:QName("root2"), cts:true-query())
))
)
)