XQuery 一些 xml 文件?

是否有可能打开 2 文件是 xQuery 并建立联系它们?
已邀请:

帅驴

赞同来自:

是的,这里
http://www.w3.org/TR/xquery/%2 ... tions

http://www.w3.org/TR/xquery
XQuery .:

"将来自多个来源的数据组合到一个结果的连接是非常重要的请求类型。 在本节中,我们说明了如何表达几种类型的化合物 XQuery. 我们将在以下三个文件中基于以下示例:

文件名称
parts.xml

, 多个元素
part

; 每个元素
part

, 反过来,包含子元素
partno


description

.

文件名称
suppliers.xml

, 多个元素
supplier

; 每个元素
supplier

, 反过来,包含子元素
suppno


suppname

.

文件名称
catalog.xml

, 包含供应商与细节之间的关系的信息。 目录文档包含许多元素
item

, 其中的每个 , 反过来,包含子元素
partno

,
suppno


price

.

正常连接 /"inner"/ 从两个或更多相关源返回信息,如以下示例中所示,它将来自三个文档的信息组合起来。 这个例子是创造的 "descriptive catalog", 来自目录文档的衍生,但包含零件的描述而不是供应商的部分和名称而不是供应商编号的描述。 新目录按照部分的描述按字母顺序排列,其次是由供应商的名称排列。*


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


以前的请求仅返回有关具有零件供应商和供应商的详细信息的信息。 户外的

化合物

- 这是一种与一个或多个参与源中的信息保存的连接,包括在另一个源中没有适当的元素的元素。 例如,

留下外部连接

在供应商和细节之间可以返回有关没有相应部分的供应商的信息。"

注意 XQuery 没有标准函数

document// /这是

http://www.w3.org/TR/xslt20/#function-document
XSLT/ 而是有

功能 doc//, 这是一部分 "
http://www.w3.org/TR/xpath-functions
XQuery 1.0 和 XPath 2.0 ".

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

:

XQuery 对K敏感。
http://www.w3.org/TR/xquery/#lexical-structure
- 相应的处理器将不允许在CHISces示例中使用的频繁关键字 XQuery.

不需要前缀标准函数,例如 doc//, 我只是引用规格 XQuery, 哪个有前缀

. 否则在我自己的代码中我会降低前缀 "
fn

".

功能 document// 不是标准功能

XQuery/XPath . 相反,你应该

http://www.w3.org/TR/xpath-functions/#func-doc
功能 doc//.

八刀丁二

赞同来自:

它比它更容易 /至少使用 SAXON/:


let $items := /
doc/"file1.xml"/ ,
doc/"file2.xml"/ ,
doc/"file3.xml"/
/

for $x in $items ...

裸奔

赞同来自:

在 XQuery, 如果您写的内容:


for $x in doc/'doc1.xml'///a
for $y in doc/'doc2.xml'///a
where $x/@name = $y/@name
return $x


然后是你的处理器 XQuery 应该有足够的智能来确定连接是什么。

你从不清楚地指出 XQuery, 什么是有关的。 总主题B. XQuery 在于您的计划所说的事实

什么

您想要获得的信息

作为

它是计算的。

虽然你似乎在第二个文件中一再循环,但实际上是一个真实的处理器 XQuery 将更合理地执行它,大约类似于以下运营商 SQL /我的 SQL 非常生锈,所以如果这个语法完全异常,我道歉/


SELECT doc1.a
FROM doc1 INNER JOIN doc2
WHERE doc1.name = doc2.name


基准 XMark 包含要注意的几个请求的例子。 特别是,请求 9 经过 12 执行连接。

要回复问题请先登录注册