Kerstin: xsl:copy und/oder xsl:copy-of

Beitrag lesen

Hallo Thomas,

Du kannst ein Template für alle Elemente erstellen, deren Inhalt du nciht verändern willst:
<xsl:template match="foo | bar | bla | blubb">
  <xsl:copy-of select="."/>

Ohje, das wär ganz schön aufwendig dort oben alle Elemente einzutragen, die nicht verändert werden und nur kopiert werden sollen.

Jetzt hab ich soweit angefangen:

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

Soweit wird erstmal alles kopiert und auch andere Templates aufgerufen - denkt man zumindest.

zweites Template:
<xsl:template match="root">
 xsl:copy
   <xsl:if test="wenn was stimmt">
    <!-- füge hinzu -->
    <daten id="3"></daten>
   </xsl:if>
  <xsl:copy-of select="*"/>
 </xsl:copy>
</xsl:template>

Klappt auch wunderbar!
Soll jetzt aber ein neuer <kontakt> unter root/kontakte angelegt werden, wird jedoch nicht in das template hineingegangen:
<xsl:template match="kontakte">
 xsl:copy
   <xsl:if test="wenn was stimmt">
    <!-- füge hinzu -->
    <kontakt id="3"></kontakt>
   </xsl:if>
  <xsl:copy-of select="*"/>
 </xsl:copy>
</xsl:template>

Außer meiner Sicht sollte das doch funktionieren, oder?
Jemand noch eine Idee?

Gruß,
Kerstin