【发布时间】:2021-08-26 06:48:17
【问题描述】:
我需要保留输入 xml 中按键值分组的最新条目。可以用 xsl 2.0 做到这一点吗? 输入
<root>
<line>
<date>2021-01-01T00:00:00</date>
<field1>AAA</field1>
<field2>1</field2>
</line>
<line>
<date>2021-01-01T23:00:00</date>
<field1>BBB</field1>
<field2>1</field2>
</line>
<line>
<date>2021-01-02T00:00:00</date>
<field1>CCC</field1>
<field2>2</field2>
</line>
输出应该是
<root>
<line>
<date>2021-01-01T23:00:00</date>
<field1>BBB</field1>
<field2>1</field2>
</line>
<line>
<date>2021-01-02T00:00:00</date>
<field1>CCC</field1>
<field2>2</field2>
</line>
xsl 保留按 field2 分组的最新条目,因此结果是两个条目(field2= 1 和 field2=2)。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:template match="/">
<xsl:for-each-group select="root/line" group-by="field2">
<xsl:sort select="date"/>
<line>
<xsl:copy-of select="node()"/>
</line>
</xsl:for-each-group>
</xsl:template>
样式表>
【问题讨论】:
-
是的,这是可能的。你到底在哪里坚持这个?
-
XSLT 2 和 3 分组显示在 stackoverflow.com/tags/xslt-grouping/info 中,排序是通过处理
current-group()并使用xsl:sort完成的,或者您可以只选择current-group()中的项目和 @987654329 @. -
我已经使用了问题中更新的 xsl 但无法正常工作。
-
“不工作”不能很好地描述问题。实际结果是什么?您的 XSLT 处理器是否支持 XSLT 2.0?您的样式表声明
version="1.0"。 -
它保留 2 行,但 field1=AAA 而不是 BBB。