XML mit Style (This page uses CSS style sheets) Style Was sollte ich wann verwenden? Externe Style Sheets CSS Eingebettete Style Sheets -- Existiert ein solches nicht können Sie dennoch externe Style Sheets durch die Nutzung von xml-stylesheet Verarbeitungs Instruktionen (processing instructions) wie dieser verwenden: ... der Rest des Dokumentes... Diese processing instructions (PI) müssen vor dem ersten Tag des Dokumentes verwendet werden. Ein type="text/css" ist nicht notwendig, aber es hilft dem Browser: wenn er kein CSS verarbeiten kann muss er nichts herunterladen. Genau wie beim link Element in HTML können mehrere xml-stylesheet PIs mit verschiedenen Attributen für Typ, Medium und Titel verwendet werden. Hier ist ein grösseres Beispiel. Nehmen wir an Sie haben drei Style Sheets, einen welcher den Basis Display Type eines jeden Elementes festlegt (inline, block, list-item, etc.) und zwei andere welche sich um die Farben und Abstände kümmern. Die zwei letzten sind gegenseitige Alternativen und der Leser des Dokumentes kann entscheiden welchen von Beiden er nutzen möchte. Mit Aussnahme dass das Dokument gedruckt werden soll, in diesem Fall wird immer der letzte Style genutzt. Hier ist der gemeinsame Style Sheet: : /* common.css */ INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block } -- EXTRAS { display: none } Fredrick the Great meets Bach ... In diesem Fall muss ein type="text/css" Eintrag vorhanden sein, ansonsten muss der Browser die Style Sheet Sprache erraten. Die xml-stylesheet PI verweist nun nicht auf eine externe Style Sheet Datei, sonden auf ein xml-stylesheet Element im Dokument selbst. Dieses Element wird von einem id Attribut idendifiziert welches als Ziel für diese Verlinkung dient. (Je nach dem verwendeten XML Format kann das id Attribut auch woanders aufgerufen werden oder ganz und gar fehl am Platze sein.) -- Extraregel benötigt werden welche ein Fragment Idendifikator in einem Style Sheet dafür verwendet um auf den Inhalt eines Elementes mit Hilfe eines PI zu verweisen. 3. Genauso ist es unklar was passiert wenn innerhalb eines Elementes Kinderelemente existieren. Besteht der Style Sheet dann aus allen Inhalten der verknüpften Elemente? Oder nur aus dem Inhalt der ersten Elements? Oder soll dieser Fall als Fehler behandelt und ignoriert werden? 4. Im obigen Beispiel verweist die URL innerhalb des Dokumentes selbst. Der Fakt dass der Browser die URL überhaupt aufrufen kann kann bedeuten dass er weiss wie XML verarbeitet werden muss und damit in der Lage ist das gewünschte Style Element zu finden. Aber nehmen wir einmal an die URL verweisst auf ein Fragment innerhalb eines externen Dokumentes. Der Browser müsste jetzt ersteinmal das aktuelle XML Dokument herunterladen und parsen um im Anschluss den Style Sheet zu laden und zu parsen. Aber das type Attribut sagt nur etwas über den Dokumententyp von einem der beiden Dokumente aus - somit kann der Browser nicht wissen ob er den Style Sheet verarbeiten kann. Es ist ja noch nicht einmal definiert ob das type Attribut nun den Typ des externen Dokumentes oder den des da -- Format. Dank dem Style Sheet kann der Browser nun wenigstens irgendetwas ausgeben. Bekannte Formate wie SVG, SMIL oder XHTML besitzen ihre eigenen Regeln und gehen über die Möglichkeiten hinaus welche ein Style Sheet spezifizieren könnte. Aber da gibt es noch andere Punkte mit denen der Browser bei generischem XML nichts anfangen kann: zum Beispiel weiss er nicht welche Attribute als ID Attribute interpretiert werden sollen. Es existiert eine W3C Empfehlung für ein Attribut namens xml:id und wenn das Dokument Attribute diesen Namens enthält dann ist es sehr wahrscheinlich dass ein URL Fragment darauf verweisst. Existiert ein solches Attribut jedoch nicht muss der Browser selbst versuchen herauszubekommen welches Attribut als ID verwendet wird. Wenn das Dokument einen DOCTYPE Eintrag am Seitenanfang enthält kann die damit verbundene DTD heruntergeladen werden in welcher die Attribute angegeben sind. Aber Browser sind vielleicht nicht in der Lage die DTD herunterzuladen oder es existiert kein DOCTYPE Verweis. -- basierten Formate nicht verfügbar. Natürlich ermöglichst CSS die Auswahl von allen Attributen auch ohne das class Attribut, die Verwendung ist aber dann wesentlich unbequemer. Hier ein Beispiel. Existiert ein class Attribut und das Dokumentenformat definiert dass das Ganze als HTML interpretiert werden soll kann die Schreibweise mit dem Punkt verwendet werden. (Von daher wird dieses spezielle Beispiel nicht funktionieren da es in HTML kein Element gibt welchem ein class Attribut zugewiesen werden könnte s { display: none } --

Some text...

A note...

Wenn das Dokumenten Format nicht angegeben ist erzeugt class eine Unterklasse und der längere Selektor "[ ]" muss verwendet werden: s { display: none } p { display: block } p[class~=note] { color: red }

Some text...

A note...

Existiert kein class Attribut aber irgendetwas anderes muss dennoch "[ ]" verwendet werden: Testen Sie es in Ihrem Browser