XML/CSS
Stylesheets sind eigentlich als Ergänzungssprache für HTML gedacht. Mit Hilfe von CSS ist es möglich, HTML-Elemente, die ein Browser mit Default-Formatierungen anzeigt, nach eigenen Wünschen zu formatieren. Diese Möglichkeit besteht je nach Browser auch, um XML-Daten zu formatieren. Genauso, wie Sie HTML-Elemente wie blockquote, h1 oder div mit CSS formatieren können, ist dies dann mit eigenen XML-Elementen möglich, egal ob sie nun telefonnummer
, kurzbeschreibung
oder wie auch immer heißen.
Damit die Kombination von XML und CSS funktioniert, müssen im Browser allerdings drei Voraussetzungen erfüllt sein:
- Der Browser muss XML verarbeiten können.
- Der Browser muss CSS kennen.
- Der Browser muss CSS in Verbindung mit XML erlauben.
Dabei ist nicht einmal eine DTD erforderlich. Es genügt, wenn eine wohlgeformte XML-Datei existiert. Die Elemente einer solchen Datei können Sie mit CSS formatieren. Dazu müssen Sie die XML Datei mit einem Stylesheet verknpüfen, was mit einer XML-[[1]] erreicht werden kann:
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="styles.css"?>
<person>
<name>Erika Mustermann</name>
<geburtsdatum>1973-05-27</geburtsdatum>
<adressen>
<adresse>
<plz>12345</plz>
<ort>Musterhausen</ort>
<zustellort>Musterweg 47</zustellort>
</adresse>
<adresse>
<plz>54001</plz>
<ort>Musterhausen</ort>
<zustellort>Postfach 12345</zustellort>
</adresse>
</adressen>
</person>
Um XML nur mit CSS gestalten zu können, ist es erforderlich, dass die XML-Daten in einem für CSS geeigneten Markup vorliegen. Ob ein XML Element als Inline- oder Blockelement dargestellt werden soll, müssen Sie im Stylesheet explizit festlegen.
XML in Verbindung mit CSS hat den Vorteil, dass es in den Browsern, in denen es funktioniert, ohne Kenntnisse in XSL/XSLT auskommt. Da die Verarbeitung komplett im Browser stattfindet, ist auch keine Serverumgebung oder ähnliches erforderlich.
Grenzen und Probleme bei der Darstellung mit CSS
CSS ist für Anwender, die sich mit Vorkenntnissen in HTML an XML heranwagen, zunächst sicher einfacher zu verstehen und leichter anzuwenden. Dennoch gibt es Nachteile bei CSS in Verbindung mit XML, die Sie kennen müssen:
- Wenn Sie bestimmte Elemente nicht anzeigen möchten, können Sie das mit
display:none
erreichen, aber eine richtige Filterung ist das nicht. - Eine Liste von Elementen als Liste oder als Tabelle anzuzeigen, ist nur begrenzt möglich. Natürlich können Sie im obigen XML das
<adressen>
Element als Listencontainer formatieren oder mitdisplay:table
erreichen, dass der Browser Tabellenlayout aktiviert. Sie können die<adresse>
Elemente mitdisplay:list-item
oderdisplay:table-row
passend layouten lassen. Ob das dann aber zugänglich ist, ist noch sehr die Frage. - Daten, die nicht als Elementinhalt, sondern als Attribut gespeichert sind, können nicht dargestellt werden.
- Es gibt mit CSS kaum sinnvolle Möglichkeiten, Daten bei der Anzeige zu filtern. Gerade bei feld- und datensatzorientierten Daten, wie sie in XML häufig gespeichert werden, ist nicht unbedingt immer gewünscht, dass bei einer Bildschirmausgabe jedes Feld angezeigt wird. Wenn Sie etwa eine Kontaktdatenbank in XML haben, möchten Sie bei der Ausgabe einer Telefonliste beispielsweise nur Namen, Firma und Telefonnummer ausgeben, aber keine Anschriften, Kontonummern und Geburtstage. In XSL/XSLT besteht eine solche Möglichkeit.
- Auch weitere Leistungsmerkmale von XSL/XSLT, wie etwa die automatische Sortierung von Daten vor der Ausgabe, ist mit CSS nicht möglich.
Die drei letzten Punkte lassen sich durch eigene Programmierung oder durch den Einsatz von XSL/XSLT auf der Serverseite lösen. Insbesondere das Unterdrücken von Daten, die der Client nicht sehen soll, muss auf dem Server adressiert werden, denn wenn ein Datenelement erst einmal zum Client übertragen wurde, kann es nicht mehr sicher gegen unbefugten Zugang geschützt werden. Wenn Sie aber ohnehin serverseitig eine XML Transformation durchführen müssen, dann sollten diese Transformation auch gleich das semantisch passendes HTML erzeugen, das Sie dann mit CSS regulär formatieren können.