XQuery如何使用WHERE查询获取整个xml文档

时间:2012-08-10 11:14:43

标签: xquery berkeley-db-xml

我的XML数据库只有一个集合(容器),我不知道文档名称。如何从db获取整个XML文档,它符合WHERE子句?

<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'?

2 个答案:

答案 0 :(得分:1)

只需像第一个例子中那样使用谓词:

  collection("data1.dbxml")/root[node1/node2/node3 = "My Content"]

您可以将XQuery中的谓词视为SQL中的WHERE,SELECT部分​​就是以前的所有内容。

答案 1 :(得分:0)

另一项决议......在学习之后:)

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