了解嵌套表达式的XQuery评估

时间:2015-01-24 00:36:22

标签: xml xquery

我不明白如何评估这个表达方式。 如何计算大于1的数字,因为exists表达式总是返回1或0?

for $a in distinct-values(doc("C:/BaseX/test/test1.xml")//author)

return
count(doc("C:/BaseX/test/test1.xml")//book
[exists(index-of(author, "Abiteboul"))]
)

text1.xml包含5本书作为父元素,作者作为子元素。

1 个答案:

答案 0 :(得分:2)

请注意,XQuery不是一种过程编程语言,而是一种声明式语言,你仍然缺乏谓语等基本语言特性的知识,我建议你通过一些教程来掌握大自然语言。

您的查询意味着“计算exists index-ofAbiteboul作者元素的所有图书,其价值为Abiteboul”,或者进一步解析语义“统计所有拥有作者的图书名称for $author in distinct-values(doc("C:/BaseX/test/test1.xml")//author) return count(doc("C:/BaseX/test/test1.xml")//book[ exists(index-of(author, "Abiteboul")) ]) “。

语义上更合理的代码格式化是将谓词的括号保留在上/下的行中,缩进谓词的内容。

for $author in distinct-values(doc("C:/BaseX/test/test1.xml")//author)
return
  count(doc("C:/BaseX/test/test1.xml")//book[author = "Abiteboul"])

无论如何,查询似乎有点复杂。以下查询执行是等效的,但更简洁:

{{1}}