我有一个像下面这样的XML文件,我可能有多个记录,它们有一个共同的子元素,如下所示:
<person>
<name>Alice</name>
<account>001</account>
</person>
<person>
<name>Alice</name>
<account>002</account>
</person>
如何使用XSLT 2.0将其转换为以下内容?
<person>
<name>Alice</name>
<account>001,002</account>
</person>
我是XSLT的新手,所以请原谅潜在的新手问题。这里有任何指导意见。提前谢谢。
答案 0 :(得分:2)
您可以使用for-each-group
对person
元素进行分组,使用separator
attribute on value-of
构建逗号分隔值:
<xsl:for-each-group select="person" group-by="name">
<person>
<xsl:sequence select="name" /><!-- copy the name element -->
<account>
<xsl:value-of select="current-group()/account" separator="," />
</account>
</person>
</xsl:for-each-group>
(假设您当前的上下文节点是person
元素的父节点 - 如果不是,那么您必须适当调整for-each-group
select
表达式