Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XQuery如何使用WHERE查询获取整个xml文档_Xquery_Berkeley Db Xml - Fatal编程技术网

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

XQuery如何使用WHERE查询获取整个xml文档,xquery,berkeley-db-xml,Xquery,Berkeley Db Xml,我有XML数据库,只有一个集合(容器),我不知道文档名。如何从db中获取符合WHERE子句的完整XML文档 <root> <node1> <node2> <node3>My Content</node2> </node2> </node1> <root> 它从该节点3返回一个内容 'My C

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

<root>
      <node1>
            <node2>
                   <node3>My Content</node2>
            </node2>
      </node1>
<root>
它从该节点3返回一个内容

'My Content'

它返回2个包含内容的内部节点

<node2><node3>My Content</node3></node2>
我的内容

但是如何获得符合WHERE子句的整个文档(如SELECT*FROM data2.dbxml WHERE node3='My Content'?

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

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

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

另一种解决方案……研究后:)

或者当我们知道XMLdoc中节点的深度和节点的名称时

query 'for $x in collection("data1.dbxml") 
       where $x/*/*/*/node3 = "My Content"
       return $x'

谢谢

不要引用或咨询W3Schools,他们会传播错误信息。
  collection("data1.dbxml")/root[node1/node2/node3 = "My Content"]
query 'for $x in collection("data1.dbxml") 
       where $x/root/node1/node2/node3 = "My Content"
       return $x'
query 'for $x in collection("data1.dbxml") 
       where $x/*/*/*/node3 = "My Content"
       return $x'