【问题标题】:Return the count of courses using satisfies contains XQuery返回使用满足包含 XQuery 的课程数
【发布时间】:2018-06-17 19:43:03
【问题描述】:

我一直在努力从 this XML file 返回包含“交叉列出”作为描述的课程计数。我遇到的问题是因为我正在使用 for,它会迭代并给我“1 1”而不是“2”。当我尝试使用 let 时,我得到 13,这意味着即使我指向 return count($c["Cross-listed"],它也会无条件计数。我做错了什么,我该如何解决?提前谢谢

for $c in doc("courses.xml")//Department/Course
where some $desc in $c/Description
satisfies contains($desc, "Cross-listed")
return count($c)

【问题讨论】:

    标签: xpath xquery contains xquery-3.0


    【解决方案1】:

    我遇到的问题是因为我用的是for

    你说的很对。您无需单独处理项目即可对其进行计数。

    你让事情变得太困难了。你想要的

    count(doc("courses.xml")//Department/Course[Description[contains(., "Cross-listed"]])
    

    这里的关键是:你想要一个计数,所以调用count() 函数,并给它一个参数来选择你想包含在计数中的一组东西。

    【讨论】:

    • 我不知道你可以像这样在 XPath 中使用 contains 函数。这让它变得超级简单,但是如果我想使用 where 和 satisfies contains 来解决它,它还有可能吗?谢谢!
    • @Pitagora,正如迈克尔所说:“调用 count() 函数,并给它一个参数来选择你想要包含的一组东西”,所以如果你想使用 for您需要在完整的表达式 count(for $c in doc("courses.xml")//Department/Course where ... return $c) 上调用 count 的表达式
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多