我正在尝试提供一个XSLT转换模板,它可以组合与元素文本匹配的子元素(可以是任何东西)
示例输入XML
<test>
<name>Alpha</name>
<value>11</value>
</test>
<test>
<name>Beta</name>
<value>14</value>
</test>
<test>
<name>Alpha</name>
<value>22</value>
</test>
我希望转换将子元素与匹配元素组合在一起,因此任何名为Alpha的子元素都会在输出中分组。
示例结果XML
<test>
<name>Alpha</name>
<valuelist>11,22</valuelist>
</test>
<test>
<name>Beta</name>
<valuelist>14</valuelist>
<test>
name的文本值可以是任何值,因此无法在模板匹配中特别注明。
答案 0 :(得分:0)
使用XSLT 2.0:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="root">
<xsl:copy>
<xsl:for-each-group select="test" group-by="name">
<test>
<xsl:copy-of select="name"/>
<valuelist>
<xsl:value-of select="current-group()/value" separator=","/>
</valuelist>
</test>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
</xsl:transform>