fjh: In XML eingebettetes HTML ausgeben

Beitrag lesen

Hallo Steffen,

XSL soll jetzt dafuer sorgen, dass ausser dem weitaus groesserem,
XML-basierten Texten auch die Teile mit HTML-Auszeichnung ausgegeben
werden (und die HTML-Tags natuerlich als solche interpretiert werden).

Ich nehme einfach mal an, du möchtes alles, was innerhalb eines XML-Tags mit dem Namen <HtmlEinschub> steht direkt in den Ergebnisbaum (das Ergebnisdokument) schreiben, welcher ein HTML-Dokument darstellt. Dazu benötigst du zwei Dinge zu dem sonstigen Template-Kram:

  1. Die Anweisung xsl:output als Top-Level-Element mit dem Attribut method und dem Wert "html" für dieses Attribut.
  2. Die Anweisung xsl:copy-of, um Teile des Quellbaums (Quelldokuments) mitsamt der Kinder in den Ergebnisbaum zu schreiben

Also z.B.:

XML-Datei

<?xml version="1.0" encoding="iso-8859-1"?>

<ausgabe>
  <keinHtml>Es folgt HTML aus dem Quelldokument:</keinHtml>
  <HtmlAuszug>
    <p>Ein schöner HTML-Paragraph
      <br/> Ja auch mit Zeilenumbrüchen und schön XML-konform.
      Und noch ne Tabelle
      <table border="1">
        <tr>
          <td>Zelle 1</td>
          <td>Zelle 2</td>
        </tr>
      </table>
    </p>
  </HtmlAuszug>
</ausgabe>

XSLT-Datei

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/TR/REC-html40">

<xsl:output method="html"/>

<xsl:template match="/">

<html>
      <head>
        <title>Ausgabe von HTML mit xsl:copy</title>
      </head>
      <body>
         <xsl:apply-templates />
      </body>
    </html>

</xsl:template>

<xsl:template match="keinHtml">
    xsl:apply-templates/
  </xsl:template>

<xsl:template match="HtmlAuszug">
    <xsl:copy-of select="."/>
  </xsl:template>

</xsl:stylesheet>

<xsl:ouput method="html"/> sorgt dafür, dass das XHTML als HTML ausgegeben wird. Also <br/> zu <br> wird usw.

Für die HtmlAuszug-Elemente gibt es eine eigene Template-Rule, welche dir einfach nur den Inhalt des Elements in das Ergebnis-Dokument kopiert.

Hoffe das hilft dir weiter.

Gruß
Franz