#W3C Style Activities Tech. reports Translations Software CSS vs XSL
Site index Search Copyright
Deutsche Übersetzung der Seite "How to add style to XML"
Originale Version: http://www.w3.org/Style/styling-XML
Aktuelle - übersetzte - Version:
http://www.ich-lerne-css.de/Style/styling-XML.html
Übersetzer: A.Friedrich
Bookmark: AddThis Social Bookmark Button
Sehr geehrter Leser dieses Dokumentes - bitte beachten Sie dass es sich
bei dieser Seite um die Übersetzung eines W3C Textes handelt.
Der Original Text ist urheberrechtlich geschützt, bitte beachten Sie
die im Originaldokument vermerkten Hinweise. Die Rechte an der
Übersetzung selbst liegen allein beim Übersetzer. Für eventuell
vorhandene Fehler in der Übersetzung kann keine Gewähr übernommen
werden, das einzig massgebliche und legitime Dokument ist das englische
W3C Original. Der Übersetzer bedankt sich bei den folgenden Seiten für
Ihre Unterstützung: Board. Kommentare des Übersetzers sind als solche
gekennzeichnet und unterliegen ebenfalls dem Copyright des Übersetzers.
Diese sind nicht Bestandteil des englischen Originaldokumentes.
XML mit Style
(This page uses CSS style sheets)
Style
Was sollte ich wann verwenden?
Externe Style Sheets
CSS
Eingebettete Style Sheets
XSL
Die CSS2 Empfehlungen enthalten eine kurze Einführung wie man CSS mit
XML verwenden kann (lesen Sie auch § 2.2). Zu dem Zeitpunkt als CSS
entwickelt wurde waren die Spezifikationen für XML Styles noch nicht
fertig. Im Folgenden erhalten Sie nun ein entsprechendes Tutorial.
Nehmen Sie bitte zur Kenntnis dass unsere Beispiele hier CSS verwenden,
aber sich die Regeln in den meissten Fällen auch auf XSL anwenden
lassen.
Externe Style Sheets
Tip: Testen Sie es in Ihrem Browser
HTML besitzt ein link Element um externe Style Sheets zu verlinken,
aber nicht jedes XML-basierende Format besitzt solche Elemente.
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 }
Dies ist einer der alternativen Style Sheets, gespeichert in einer
Datei namens "modern.css":
/* modern.css */
ARTICLE { font-family: sans-serif; background: white; color: black }
AUTHOR { margin: 1em; color: red }
HEADLINE { text-align: right; margin-bottom: 2em }
PARA { line-height: 1.5; margin-left: 15% }
INSTRUMENT { color: blue }
Und hier der Andere, genannt "classic.css":
/* classic.css */
ARTICLE { font-family: serif; background: white; color: #003 }
AUTHOR { font-size: large; margin: 1em 0 }
HEADLINE { font-size: x-large; margin-bottom: 1em }
PARA { text-indent: 1em; text-align: justify }
INSTRUMENT { font-style: italic }
Das damit verbundene XML Dokument sieht folgendermassen aus:
Fredrick the Great meets Bach
Johann Nikolaus Forkel
One evening, just as he was getting his
flute ready and his
musicians were assembled, an officer brought him a list of
the strangers who had arrived.
Für weitere Details lesen Sie bitte in den W3C Empfehlungen
"Associating Style Sheets with XML documents"
Eingebettete Style Sheets
Tip: Testen Sie es in Ihrem Browser
HTML besitzt ein style Element welches es erlaubt Style Sheets direkt
in der HTML Datei einzubinden. Ohne der Notwendigkeit einer externen
Datei. In manchen Fällen ist das der eimfachere Weg, insbesondere dann
wenn der Style Sheet speziell nur für dieses Dokument verwendbar ist.
Die meissten XML-basierten Formate besitzen kein solches Element.
Jedoch lässt dich die gleiche PI welche externe Style Sheets verlinkt
auch zum Einbetten der Styles selbst im Dokument verwenden. Zum
gegenwärtigen Zeitpunkt, Fabruar 2006, gibt es noch immer technische
Probleme damit und es existiert keine formelle Spezifikation dafür. Zum
Beispiel:
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.)
Ungelöste Probleme
Die W3C Empfehlung "die Verwendung von Style Sheets mit XML Dokumenten"
definiert nicht die Nutzung von eingebetteten Style Sheets im XML
Dokument, obwohl es als eine sinnvolle Möglichkeit erscheint URL
Fragmente (beginnend mit "#") zu erlauben. Zum gegenwärtigen Zeitpunkt,
Frühjahr 2006, existieren noch immer ungelöste Probleme ohne
veröffentilchte Spezifikation. Es handelt sich dabei um die folgenden
Probleme:
1. Da der eingebettete Style Sheet nicht separat vom Server geladen
wird, kann der Server dem Browser keine Informationen über das vom
Style Sheet verwendete Format mitteilen. Somit wird das type
Attribut notwendig. Es ist unklar was passiet wenn dieses Attribut
weggelassen wird: wird der Style Sheet ignoriert? Wird angenommen
es handele sich um CSS? Existiert irgendein Algorithmus um die
Sprache herauszufinden?
2. In den meissten XML Formaten idendifiziert ein Fragment
Idendifikator ein komplettes Element, nicht den Inhalt des
Elementes. Aber ein Style Sheet welcher mit beginnt
stellt kein korrektes CSS dar. Es scheint also als würde eine
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
eingebetteten Style Sheets definiert.
5. Die Style Sheet PI sind am sinnvollsten bei der Verwendung von
"Generischem XML," also mit XML in einem dem Browser unbekannten
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.
6. Eine Fragment ID ist nur ein Weg um auf ein Element innerhalb eines
Dokumentes zu verweisen. Eine andere W3C Empfehlung definiert
XPointers um Elemente innerhalb eines Dokumentes ohne IDs zu
idendifizieren. Aber derzeit macht das noch keinen Sinn da kaum ein
Browser etwas damit anfangen kann.
Inline Styles
HTML erlaubt auch die Verwendung von Styles welche direkt innerhalb
eines Elementes verwendet werden können mit Hilfe des style Attributes.
Die meissten XML-basierten Formate besitzen kein solches Attribut, auch
wenn manche einige HTML-Möglichkeiten (modules) innerhalb des
Dokumentes gestatten.
Klassen Attribute
Tip: Testen Sie es in Ihrem Browser
Das class Attribute welches das Erzeugen von Klassen für Elemente
innerhalb des HTML Dokumentes erlaubt ist für den Grossteil der XML
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 }
p { display: block }
p.note { color: red }
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
s { display: none }
p { display: block }
p[warning="yes"] { color: red }
Some text...
A note...
W3C Aktivitäten Tech. Berichte Übersetzungen Software Seiten Index
Suche
Bert Bos
Created 29 February 2000 (last update: $Date: 2007/01/25 14:17:23 $)
__________________________________________________________________
IMPRESSUM