Thomas J.S.: Zwei Templates für ein Element

Beitrag lesen

Hallo,

ich beschäftige mich erst seit kurzem mit XSL und komme bei folgender Aufgabenstellung nicht weiter.
Ich habe es mal wie folgt auf das wesentliche reduziert.

Eine XML-Datei Bsp.1 soll nach Bsp.2 transformiert werden.
Dafür gibt es für jedes Element ein eigenes Template (Bsp.3)
Soweit ist mir alles klar.
Jetzt möchte ich aber ein Ergebnis wie in Bsp. 4 haben.
Also ein allgemeineres Element "xyz" welches die spezielleren Elemente "a", "b" und "c" umfasst.
Wie löst man das am elegantesten?
Bisher habe ich nur die Lösung die Tags für "xyz" in jedem Template für a,b und c zu ergänzen.
Also dreifach und das gefällt mir so nicht.

Bei der Lösung die mir vorschwebt würde ich ein weiteres Template für "xyz" haben das auf "a", "b" und "c" passt und jeweils
eines für "a", "b" und "c".
Bisher habe ich es aber nicht hinbekommen.
Die grundlegenden XSL-Bausteine sind mir bekannt, was mir hier fehlt ist die Lösungsidee.

<xsl:template match="example">
 <example>
  <xsl:for-each select="*">
   <xyz>
    <xsl:apply-templates />
   </xyz>
  </xsl:for-each>
 </example>
</xsl:template>

<xsl:template match="a"> ...
<xsl:template match="b"> ...
etc.

Grüße
Thomas