XQuery多个xml文件?

Ryu*_*Ryu 8 xml xquery

是否可以从xQuery中打开2个文档并对它们进行连接?

Dim*_*hev 11

是的,这里是一个例子来自XQuery的规范:

"将来自多个源的数据组合成单个结果的连接是一种非常重要的查询类型.在本节中,我们将说明如何在XQuery中表达几种类型的连接.我们将基于以下三个文档进行示例:

  1. 一个名为parts.xml包含许多part元素的文档; 每个part依次元素包含partnodescription子元素.
  2. 一个名为suppliers.xml包含许多supplier元素的文档; 每个supplier依次元素包含suppnosuppname子元素.
  3. 一个名为的文档catalog.xml,其中包含有关供应商和零件之间关系的信息.目录文件包含许多item元件,其中的每一个又包含partno,suppno以及price子元素.

传统("内部")联接返回来自两个或更多相关源的信息,如以下示例所示,其组合来自三个文档的信息.该示例生成从目录文档派生的"描述性目录",但包含部件描述而不是部件号和供应商名称而不是供应商编号.新目录按部件描述按字母顺序排序,其次按供应商名称排序.*

<descriptive-catalog>
   { 
     for $i in fn:doc("catalog.xml")/items/item,
         $p in fn:doc("parts.xml")/parts/part[partno = $i/partno],
         $s in fn:doc("suppliers.xml")/suppliers
                  /supplier[suppno = $i/suppno]
     order by $p/description, $s/suppname
     return
        <item>
           {
           $p/description,
           $s/suppname,
           $i/price
           }
        </item>
   }
</descriptive-catalog>
Run Code Online (Sandbox Code Playgroud)

上一个查询仅返回有供应商和供应商的零件的信息.一个外部联接被联接从一个或多个参与源,包括那些在其它源没有匹配的元件的元件保留信息.例如,供应商和零件之间的左外连接可能会返回有关没有匹配零件的供应商的信息."

请注意,XQuery没有标准的document()函数(它是一个XSLT函数),而是具有doc()函数,它是" XQuery 1.0和XPath 2.0函数和运算符 "的一部分.

克里斯在答案中至少有两个错误:

  1. XQuery 区分大小写 - 一个符合标准的XQuery处理器不允许使用Chris示例中使用的大写关键字.
  2. 没有必要像doc()这样的标准函数加前缀,我只是引用了带有前缀的XQuery规范.否则,在我自己的代码中,我将省略" fn"前缀.
  3. 函数document()不是标准的XQuery/XPath函数.该DOC()函数应改为使用.