gpt4 book ai didi

xml - Xquery 3.0 按属性值分组

转载 作者:行者123 更新时间:2023-12-02 03:31:01 25 4
gpt4 key购买 nike

在学习 Xquery 和 Xpath 的过程中,我在尝试将苹果与其类别分组时遇到了问题。

我在文档中使用 XPath 3.0XML 1.0

我有这个:

<fruits>

<fruit>
<name>Apple</name>
<category>Summer</category>
</fruit>

<fruit>
<name>Mondarine</name>
<category>Autumm</category>
</fruit>

<fruit>

<name>Kiwi</name>
<category>Summer</category>
</fruit>

<fruit>
<name>Aguacate</name>
<category>Winter</category>
</fruit>

<fruit>
<name>Banana</name>
<category>Winter</category>
</fruit>

</fruits>

我需要下一个输出:

<summary>
<category = "Summer"/>
<item list-names = "Apple, Kiwi"/>
</summary>

<summary>
<category = "Autumm"/>
<item list-names = "Mondarine"/>
</summary>

<summary>
<category = "Winter"/>
<item list-names = "Aguacate, Banana"/>
</summary>

如何使用 XQuery 执行此操作?

可能非常简单,但我还没有看到它,并且我正在努力解决这个问题。感谢您的帮助!

最佳答案

您可以在 XQuery 中解决这个问题,方法是迭代类别名称的不同值,然后使用 XPath 查询与类别匹配的项目名称:

for $category in distinct-values($fruits/fruit/category)
let $items := $fruits/fruit[category = $category]/name
return
<summary>
<category>{ $category }</category>
<item list-names="{ string-join($items, ', ') }"/>
</summary>

请注意,您的示例输出不是有效的 XML:

<category = "Summer"/>

存储该值的选项可以在属性中:

<summary category="Summer"> ...
<category value="Summer"/> ...

或者在一个元素中,这是我为此答案选择的:

<summary>
<category>Summer</category>
<item list-names="Apple, Kiwi"/>
</summary>
<summary>
<category>Autumm</category>
<item list-names="Mondarine"/>
</summary>
<summary>
<category>Winter</category>
<item list-names="Aguacate, Banana"/>
</summary>

关于xml - Xquery 3.0 按属性值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40427742/

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