XSLT-如何在XSLT2.0中按公共子元素值和分层数据对输出进行分组



我有一个如下所示的XML文件,其中我可能有多个带有公共子元素的记录,如下所示:


<person>
<name>Alice</name> /* root node
<account>001</account>
</person>
<person>
<name>Alice</name>
<account>002</account>
</person>

如何使用XSLT 2.0将其转换为以下内容?


<person>
<name>Alice</name>
<child-detail>
<account>001</account>
<account>002</account>
</child-detail>
</person>

"我对XSLT还很陌生,所以请原谅这个潜在的新手问题。如有任何指导,我们将不胜感激。提前谢谢。">

您可以简单地对每个组使用

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="/">
<xsl:for-each-group select="//person" group-by="name">
<xsl:copy>
<xsl:copy-of select="name"/>
<child-detail>
<xsl:apply-templates select="current-group()/account"/>
</child-detail>
</xsl:copy>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>

最新更新