我不明白如何评估这个表达方式。 如何计算大于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本书作为父元素,作者作为子元素。
答案 0 :(得分:2)
请注意,XQuery不是一种过程编程语言,而是一种声明式语言,你仍然缺乏谓语等基本语言特性的知识,我建议你通过一些教程来掌握大自然语言。
您的查询意味着“计算exists
index-of
个Abiteboul
作者元素的所有图书,其价值为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}}