【问题标题】:XQuery how to get whole xml document with WHERE queryXQuery 如何使用 WHERE 查询获取整个 xml 文档
【发布时间】: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'?

【问题讨论】:

    标签: xquery berkeley-db-xml


    【解决方案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,众所周知,它们会传播错误信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2012-10-31
      相关资源
      最近更新 更多