有多个孩子的 XML 组

Group XML with multiple childs

大家好,有人可以帮助 xslt 吗?我正在尝试按特定节点将此 xml 分组,但我将 运行 保留为一个不包含 child5 下的嵌套信息的问题...任何帮助将不胜感激。

这是开始xml:

<parent>
    <a>1</a>
    <b>
        <b1>
            <b2>data</b2>
        </b1>
    </b>
    <a>1</a>
    <b>
        <b1>
            <b2>data2</b2>
        </b1>
    </b>
</parent>

期望的输出是:

<parent>
    <data>
        <a>1</a>
        <b>
            <b1>
                <b2>data</b2>
            </b1>
        </b>
    </data>
    <data>
        <a>2</a>
        <b>
            <b1>
                <b2>data</b2>
            </b1>
        </b>
    </data>
</parent>

我已经试过了,但是它会将 b 下的所有信息都更改为字符串...?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="parent">
  <parent>
    <xsl:for-each-group select="*" group-starting-with="a">
      <data>
      <xsl:for-each select="current-group()">
        <xsl:copy>
          <xsl:apply-templates/>
        </xsl:copy>
      </xsl:for-each>
      </data>
    </xsl:for-each-group>
  </parent>
</xsl:template>
</xsl:stylesheet>

在分组内部,您似乎只想复制该组,例如

<xsl:template match="parent">
  <parent>
    <xsl:for-each-group select="*" group-starting-with="a">
      <data>
        <xsl:copy-of select="current-group()"/>
      </data>
    </xsl:for-each-group>
  </parent>
</xsl:template>

或者使用基本模板设置身份转换并使用 <xsl:apply-templates select="current-group()"/> 而不是 xsl:copy-of