gpt4 book ai didi

xml - 为什么按 $variable/@attribute 分组不起作用?

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:55 26 4
gpt4 key购买 nike

问题背景

给定每个家庭的类别...

<?xml version="1.0" encoding="UTF-8"?>
<root>
<family>
<categories>
<cat id="1" />
<cat id="2" />
</categories>
</family>
<family>
<categories>
<cat id="3" />
<cat id="5" />
</categories>
</family>
<family>
<categories>
<cat id="3" />
<cat id="5" />
<cat id="6" />
</categories>
</family>
</root>

我想要家庭最共同的类别...

<common-family-category id="3" count="2"/>
<common-family-category id="5" count="2"/>

成功尝试

我可以通过对每个迭代的 id 进行分组来实现该结果...

for $family-category-id in //family/categories/cat/@id
count $return-indexes
group by $family-category-id
order by count($return-indexes) descending
where count($return-indexes) > 1
return
<common-family-category id="{$family-category-id}" count="{count($return-indexes)}" />

并且还通过迭代每个类别并将 id 存储在变量中...

for $family-category in //family/categories/cat
let $family-category-id := $family-category/@id
count $return-indexes
group by $family-category-id
order by count($return-indexes) descending
where count($return-indexes) > 1
return
<common-family-category id="{$family-category-id}" count="{count($return-indexes)}" />

失败的尝试

但是我无法通过迭代类别并直接对id进行分组来实现...

for $family-category in //family/categories/cat
count $return-indexes
group by $family-category/@id
order by count($return-indexes) descending
where count($return-indexes) > 1
return
<common-family-category id="{$family-category/@id}" count="{count($return-indexes)}" />

它在 group by $family-category/@id 中给出以下错误:

[XPST0003] Expecting valid expression after 'group by'

问题

自从将 $family-category/@id 设置为 $family-category-id 并将其分组后...

为什么直接按 $family-category/@id 分组不起作用?

如果那真的不起作用,那是什么原因呢?

最佳答案

XQuery 3.0 中基本上有两种形式的分组子句

一般形式是

group by $var := key-expression

其中 $var 定义将引用组的变量,key-expression 是计算分组键的表达式。

如果你发现自己在写作

group by $var := $var

那么你可以将其缩写为更方便的速记

group by $var

但是你不会写

group by key-expression

不声明分组变量,除非在关键表达式是简单变量引用的特殊情况下。

关于xml - 为什么按 $variable/@attribute 分组不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457430/

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