brunft: XSLT-Element xsl:copy-of übernimmt das xml tag

Ich verwende das xsl:copy-of Element in einem XSL-file, um in bestimmten tags eines XML-files auch XHTML-tags verwenden zu können.
Beispiel:

(XML-file)
...
<xml_tag>
  Irgend ein Text mit <b><a href="http://selfhtml.teamone.de/html/xhtml">XHTML</a>-tags</b><br />
  über mehrere Zeilen.
</xml_tag>
...

Dieses tag möchte ich nun mittels XSL in ein HTML-Dokument bringen. Damit mir die XHTML-tags erhalten bleiben, verwende ich copy-of, also:

(XSL-file)
...
<xsl:template match="xml_tag">
  <p>
    <xsl:copy-of select="." />
  </p>
</xsl:template>
...

Wenn ich das so mache, wird allerdings das xml tag mit in den HTML-source kopiert, d.h. es kommt folgendes raus:

(HTML-file)
...
<p>
  <xml_tag>
    Irgend ein Text mit <b><a href="http://selfhtml.teamone.de/html/xhtml">XHTML</a>-tags</b><br>
    über mehrere Zeilen.
  </xml_tag>
</p>
...

Muss ich den Inhalt von <xml_tag> anders adressieren, damit mir das nicht passiert? Oder handelt es sich in diesem Fall vielleicht um ein Manko in XSL? Für diesen Fall wäre ich für eine Umgehungslösung sehr dankbar.
Ich verwende übrigens Saxon 6.5.2 für die Generierung des HTML-files.

thx
brunft

  1. Hallo,

    Ich verwende das xsl:copy-of Element in einem XSL-file, um in bestimmten tags eines XML-files auch XHTML-tags verwenden zu können.

    Ja, aber was hat das mit xsl:copy-of zu tun?

    Beispiel:

    <hier deine Beispiele/>

    Muss ich den Inhalt von <xml_tag> anders adressieren, damit mir das nicht passiert?

    Ja, du willst ja die Kinder von <xml_tag> haben nicht das Tag selber. Du musst also noch eine Stufe tiefer steigen und ALLE Kindknoten selektieren:

    <xsl:template match="xml_tag">
      <p>
        <xsl:copy-of select="./node()" />
      </p>
    </xsl:template>

    löst dein Problem

    Oder handelt es sich in diesem Fall vielleicht um ein Manko in XSL?

    Nein, alles wohldurchdacht ;-)

    Gruß
    Franz