XML/CSS: Unterschied zwischen den Versionen

Aus SELFHTML-Wiki
< XML
Wechseln zu: Navigation, Suche
K (l korr)
(Grenzen und Probleme bei der Darstellung mit CSS)
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
 
*Der Browser muss CSS in Verbindung mit XML erlauben.
 
*Der Browser muss CSS in Verbindung mit XML erlauben.
  
Dabei ist nicht einmal eine DTD erforderlich. Es genügt, wenn eine Seite wohlgeformte XML-Datei existiert. Die Elemente einer solchen Datei können Sie mit CSS formatieren.
+
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-[[https://wiki.selfhtml.org/wiki/XML/Regeln/XML-Deklaration#Verarbeitungsanweisungen_innerhalb_einer_XML-Datei|Verarbeitungsanweisung]] erreicht werden kann:
 +
 
 +
{{Beispiel|titel=CSS in XML Dokument einbinden|
 +
{{BeispielCode|<source lang="xml">
 +
<?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>
 +
</source>
 +
}}}}
 +
 
 +
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 [[XML/XSL/XSLT|XSL/XSLT]] auskommt. Da die Verarbeitung komplett im Browser stattfindet, ist auch keine Serverumgebung oder ähnliches erforderlich.
 
XML in Verbindung mit CSS hat den Vorteil, dass es in den Browsern, in denen es funktioniert, ohne Kenntnisse in [[XML/XSL/XSLT|XSL/XSLT]] auskommt. Da die Verarbeitung komplett im Browser stattfindet, ist auch keine Serverumgebung oder ähnliches erforderlich.
Zeile 15: Zeile 40:
 
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:
 
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:
  
*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.
+
* Wenn Sie bestimmte Elemente nicht anzeigen möchten, können Sie das mit <code>display:none</code> erreichen, aber eine richtige Filterung ist das nicht.
*Auch weitere Leistungsmerkmale von [[XML/XSL/XSLT|XSL/XSLT]], wie etwa die automatische Sortierung von Daten vor der Ausgabe, ist mit CSS derzeit nicht möglich.
+
* Eine Liste von Elementen als Liste oder als Tabelle anzuzeigen, ist nur begrenzt möglich. Natürlich können Sie im obigen XML das {{tag|adressen}} Element als Listencontainer formatieren oder mit <code>display:table</code> erreichen, dass der Browser Tabellenlayout aktiviert. Sie können die {{tag|adresse}} Elemente mit <code>display:list-item</code> oder <code>display:table-row</code> 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 [[XML/XSL/XSLT|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.
  
 
[[Kategorie:XML]]
 
[[Kategorie:XML]]

Aktuelle Version vom 5. Mai 2024, 13:15 Uhr

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:

CSS in XML Dokument einbinden
<?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 mit display:table erreichen, dass der Browser Tabellenlayout aktiviert. Sie können die <adresse> Elemente mit display:list-item oder display: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.