Heiko Jägle: HTML Elemente im XML Dokument

Hallo XML-Spezialisten,

auf welche Weise lassen sich HTML-Elemente am besten in XML-Knoten einbinden und mit XSLT verarbeiten?

Zum Beispiel möchte ich in einem XML Element <beschreibung> nicht nur einfache Text-Strings sondern auch HTML-Elemente wie <i>, <b>, Auflistungen oder gar Tabellen hineinkopieren und für die Ausgabe im Browser nutzen. Die Vorgabe für das XML-Dokument erfolgt mit XML-Schema. Muß ich alle HTML-Elemente und deren Attribute in diesem XML-Schema selbst definieren oder gibt es eine bequemere Möglichkeit dazu?

Ein vereinfachtes Beispiel:
<?xml version="1.0" encoding="UTF-8"?>
<buecher>
  <buch>
    <titel>Buch 1</titel>
    <beschreibung>Ein Buch über
      <ul>
        <li>XML</li>
        <li>XSL</li>
        <li>CSS</li>
      </ul>
    und so weiter.
    </beschreibung>
  </buch>
  <buch>
    ...
  </buch>
</buecher>

Wie bekomme ich im XSLT-Template diese HTML-Knoten 1:1 in die Ausgabedatei? Muß ich hier wieder für jedes HTML-Element ein Template erstellen?

Fragen über Fragen... Vielen Dank im voraus für Eure Hilfe und Anregungen.

Heiko Jägle

  1. Halihallo Heiko

    auf welche Weise lassen sich HTML-Elemente am besten in XML-Knoten einbinden und mit XSLT verarbeiten?

    Wenn du die HTML Elemente nicht verarbeiten möchtest, verwende CDATASections:

    <?xml version="1.0" encoding="UTF-8"?>
    <buecher>
      <buch>
        <titel>Buch 1</titel>
        <beschreibung><![CDATA[Ein Buch ueber
          <ul>
            <li>XML</li>
            <li>XSL</li>
            <li>CSS</li>
          </ul>
        und so weiter.]]>
        </beschreibung>
      </buch>
      <buch>
        ...
      </buch>
    </buecher>

    du solltest bei Gelegenheit das "ü" maskieren.

    Viele Grüsse

    Philipp

    1. Hi,

      <?xml version="1.0" encoding="UTF-8"?>
      du solltest bei Gelegenheit das "ü" maskieren.

      Aus welchem Grund? Im Unicode ist ü unmaskiert erlaubt. Auch wenn der Unicode im Format UTF-8 codiert wird.

      Zu Heikos 2. Frage: xsl:copy-of

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  2. Hallo,

    auf welche Weise lassen sich HTML-Elemente am besten in XML-Knoten einbinden und mit XSLT verarbeiten?

    Entweder wie jedes andere Element, oder du verwendest html-Namespace (ob das aber auch nütz kann ich dir nicht sagen, hängt ja von deinen Anwendungen ab)

    Zum Beispiel möchte ich in einem XML Element <beschreibung> nicht nur einfache Text-Strings sondern auch HTML-Elemente wie <i>, <b>, Auflistungen oder gar Tabellen hineinkopieren und für die Ausgabe im Browser nutzen. Die Vorgabe für das XML-Dokument erfolgt mit XML-Schema. Muß ich alle HTML-Elemente und deren Attribute in diesem XML-Schema selbst definieren oder gibt es eine bequemere Möglichkeit dazu?

    Aus XML-Sicht, sind das keine HTML-Element sondern einfach Elemente wie jedes andere Element in deinem XML. (oder du nützt nemaspace:siehe oben)

    Wie bekomme ich im XSLT-Template diese HTML-Knoten 1:1 in die Ausgabedatei?

    xsl:copy-of http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#copy_of

    Grüße
    Thomas

  3. Hallo XML-Spezialisten,

    Danke, Danke ;-) und Hallo

    Die Vorgabe für das XML-Dokument erfolgt mit XML-Schema. Muß ich alle HTML-Elemente und deren Attribute in diesem XML-Schema selbst definieren oder gibt es eine bequemere Möglichkeit dazu?

    Du kannst die sogenannte Wildcard in XML-Schema verwenden:
    Über das xs:any-Element kannst du beliebige Tags zulassen und diese z.B. auf den (X)HTML-Namensraum einschränken

    <xs:any namespace="http://www.w3.org/1999/xhtml">

    Oder auch - wie ja bereits gesagt - CDATA-Section.

    Gruß
    Franz