【发布时间】:2012-07-13 10:52:08
【问题描述】:
我有一个带有记录的 XML,一些记录相互关联,因此,我想在输出中将它们组合在一起。
XML:
<Records>
<Record id="1" group="10" />
<Record id="2" group="20" />
<Record id="3" group="20" />
<Record id="4" group="20" />
</Records>
目前,我显示
<span>1</span><span>2</span><span>3</span><span>4</span>
我想显示的是(基于具有相同组的记录)
<span>1</span><span>2-4</span>
我已经研究过使用preceding-sibling::Record/@group 来查看Records 迭代之间的分组是否发生了变化,但我正在努力弄清楚如何实现我需要的2-4 分组。
这是我到目前为止的内容,穿插了一些 cmets 来说明我正在尝试做的事情:
<xsl:for-each select="Records/Record">
<xsl:if test="@group != preceding-sibling::Record/@group">
<!-- obviously here we need 2-4...somehow? -->
<span><xsl:value-of="@id" /></span>
</xsl:if>
</xsl:for-each>
【问题讨论】:
-
您是否使用像 Saxon 9 或 AltovaXML 这样的 XSLT 2.0 处理器,以便可以使用
xsl:for-each-group select="Record" group-adjacent="@group">? -
不幸的是它只是 XSLT 1 - 我用它来渲染浏览器
-
看看你能不能让stackoverflow.com/questions/11451989/xsl-count-continuous-nodes/…自己适应你的需要,如果不能告诉我们,我相信以后会有人帮忙。