XQuery 如何使用 WHERE 查询获取整个 xml 文档
Posted
技术标签:
【中文标题】XQuery 如何使用 WHERE 查询获取整个 xml 文档【英文标题】:XQuery how to get whole xml document with WHERE query 【发布时间】:2012-08-10 11:14:43 【问题描述】:我的 XML 数据库只有一个集合(容器),但我不知道文档名称。如何从 db 中获取符合 WHERE 子句的完整 XML 文档?
<root>
<node1>
<node2>
<node3>My Content</node2>
</node2>
</node1>
<root>
当我有疑问时
query 'collection("data1.dbxml")/root/node1/node2[node3 = "My Content"]/string()'
它从那个node3返回一个内容
'My Content'
和
query 'collection("data1.dbxml")/root/ode1/node2/node3'
它返回 2 个带有内容的内部节点
<node2><node3>My Content</node3></node2>
但是如何获取符合此 WHERE 子句的整个文档(例如 SELECT * FROM data2.dbxml WHERE node3='My Content'?
【问题讨论】:
【参考方案1】:就像在第一个示例中那样使用谓词:
collection("data1.dbxml")/root[node1/node2/node3 = "My Content"]
您可以将 XQuery 中的谓词视为 SQL 中的 WHERE,而 SELECT 部分则是之前的一切。
【讨论】:
【参考方案2】:另一种解决方案...学习后:)
query 'for $x in collection("data1.dbxml")
where $x/root/node1/node2/node3 = "My Content"
return $x'
或者当我们知道 XMLdoc 中节点的深度和节点的名称时
query 'for $x in collection("data1.dbxml")
where $x/*/*/*/node3 = "My Content"
return $x'
感谢W3Schools
【讨论】:
不要引用或咨询 W3Schools,众所周知,它们会传播错误信息。以上是关于XQuery 如何使用 WHERE 查询获取整个 xml 文档的主要内容,如果未能解决你的问题,请参考以下文章