gpt4 book ai didi

xml - 我有2个xquery代码,其中1个给出正确的结果,而2个没有。为什么?

转载 作者:行者123 更新时间:2023-12-03 17:21:45 24 4
gpt4 key购买 nike

我应该显示一半以上的人口说德语的国家名称。

1下面的代码给出正确的结果



doc("countries.xml")//country/language[contains(.,"German") and data(@percentage)>50]/../data(@name)


2下面的代码无法给出正确的答案。



let $d:=doc("countries.xml")

for $p in $d/countries/country[language="German"] where data($p/language/@percentage)>50

return data($p/@name)


问题:我不明白为什么第一个无效,而第二个无效。如果有人能够解释我的逻辑缺陷,我将不胜感激。
谢谢

这是xml数据的一部分:

<country name="Belgium" population="10170241" area="30510">
<language percentage="32">French</language>
<language percentage="1">German</language>
<language percentage="56">Dutch</language>
</country>

最佳答案

您在这两个查询中的约束是不同的。在第一个查询中,您将两个约束都应用于相同的language

language[contains(.,"German") and data(@percentage)>50]


在第二个查询中, $p/country[language="German"],然后还将其限制为 data($p/language/@percentage)>50。但是,不能保证这两个约束中的 language只能在同一国家/地区内相同,因此查询是否在同一国家/地区中匹配任何 language/@percentage > 50language="German"

您想将两个约束都应用到相同的语言:

for $p in $doc/countries/country
where $p/language[@percentage >50 and contains(.,"German")]
return $p/@name

关于xml - 我有2个xquery代码,其中1个给出正确的结果,而2个没有。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54856440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com