Thomas J.S.: Unerwünschte konvertierung <x></x> zu <x />

Beitrag lesen

Hallo,

ich hab's befürchtet. Da ich in eine Textarea leider keinen Kommentar der Form <!-- --> schreiben kann, ohne dass dieser Text im Browser als value interpretiert wird, muss ich mir eine andere Lösung überlegen, die ohne das copy-of auskommt.

Die Lösung wäre natürlich  » output method="html" «, es sei denn du willst wirklich XHTML am Ende haben. Dann ist aber dein XHTML richtig und du weisst jetzt, dass die Browser vom richtigen XHTML noch immer recht wenig wissen. (*)

Eine andere Möglichkeit wäre, dass du die zu kopierenden Elemente einzeln mit einer rekursiven Template erzeugst:

<xsl:template match="element-mit-html-inhalt">
  <xsl:call-template name="createElement">
   <xsl:with-param name="node" select="child::*" />
  </xsl:call-template>
 </xsl:template>

<xsl:template name="createElement">
  <xsl:param name="node" />
  <xsl:element name="{name($node)}">
   <xsl:for-each select="@*">
    <xsl:copy />
   </xsl:for-each>
   <xsl:if test="name($node) = 'textarea'">
    xsl:text </xsl:text>
   </xsl:if>
   <xsl:if test="$node/child::*">
    <xsl:for-each select="$node/child::*">
     <xsl:call-template name="createElement">
      <xsl:with-param name="node" select="current()" />
     </xsl:call-template>
    </xsl:for-each>
   </xsl:if>
  </xsl:element>
 </xsl:template>

Grüße
Thomas

PS: (*) ich höre/lese schon wie hier viele aufschreien und beteuern, dass das nicht so ist.