gpt4 book ai didi

xslt-2.0 - 当总体中的某个项目与 "group-by"中的 "for-each-group"不匹配时,是否可以将其分配给具有空 current-group-key() 的组?

转载 作者:行者123 更新时间:2023-12-03 06:28:42 25 4
gpt4 key购买 nike

所以我有这样的输入:

<Root>
<Item id="1" group="foo" />
<Item id="2" group="bar" />
<Item id="3" />
</Root>

还有一个模板指令,例如:

<xsl:for-each-group select="Root" group-by="@group" />

看来我只获得了 foobar 的组。 (为什么?我预计我可能会得到第三组 current-group-key() = '')。

我真的想要第三组。我有什么选择?

谢谢,大卫。

最佳答案

马丁给出了很好的解释。

如果您想要的内容被允许,那么根本不具有 group 属性的元素将与具有 group=''< 的元素位于同一组中 属性——这并不精确。

最简单的解决方案是在 group-by 属性中指示 group 属性是否存在并不重要

最简单的方法是:

<xsl:for-each-group select="Root/*" group-by="string(@group)">

这是一个完整的转换:

<xsl:stylesheet version="2.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="/">
<xsl:for-each-group select="Root/*" group-by="string(@group)">
"<xsl:sequence select="string(@group)"/>"
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<Root>
<Item id="1" group="foo" />
<Item id="2" group="bar" />
<Item id="3" />
</Root>

产生了想要的结果:

   "foo"

"bar"

""

关于xslt-2.0 - 当总体中的某个项目与 "group-by"中的 "for-each-group"不匹配时,是否可以将其分配给具有空 current-group-key() 的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13105994/

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