# XML Transformieren



## lam_tr (3. Mrz 2021)

Hallo zusammen,

ich habe hier die folgende XML. Dabei geht es um eine UserListe, bei der die Gruppe zugewiesen wird.


```
<data>
    <user name="Hans.Peter" gruppe="TeamA">
    <user name="Hans.Peter" gruppe="TeamB">
    <user name="Max.Muster" gruppe="TeamC">
    <user name="Max.Muster" gruppe="TeamD">
</data>
```

Meine Aufgabe soll jetzt so sein, dass ich es nach diese Struktur mit XSLT transformieren soll.


```
<data>
    <user name="Hans.Peter" gruppe="TeamA,TeamB">
    <user name="Max.Muster" gruppe="TeamC, TeamD">
</data>
```

Hiermit habe ich angefangen, aber irgendwie raffe ich das nicht wirklich.


```
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

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

  <xsl:template match="data">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:for-each-group select="*" group-by="@name">
        <mergedSublist>          
          <xsl:apply-templates select="@gruppe,current-group()/*[not(self::gruppe)]"/>
        </mergedSublist>
      </xsl:for-each-group>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
```

Kann mir jemand da ein bissle nachhelfen oder Tipps geben?

Fragen:

Wenn ich ein For Each Group By @Name mache, wie komme ich an alle Attributewerte "Gruppen" kommen um es zu concatenieren?
 Mit den obigen XSLT füge ich nur die erste Gruppe eines Users ein, wie macht man es besser?

Viele Grüße
lam


----------

