Dr. O. Hoffmann
Man muß auch der Zukunft etwas überlassen.
Johann Wolfgang von Goethe
Bei XML-Dokumenten sollte zwischen solchen unterschieden werden, die der Kommunikation zwischen definierten Partnern stattfindet und die der allgemeinen Publikation dienen. So oder so werden in der Regel für jeglichen Dokumenttyp Programme verwendet, um den Inhalt darzustellen. Bei einer öffentlichen Publikation ist nicht bekannt, welche Programme die Nutzer verwenden werden. Damit die Programme überhaupt eine Chance haben, den Inhalt seiner Funktion gemäß darzustellen, kommt dafür nur ein Standarddokumenttyp von W3C in Frage. Für die interne Kommunikation, Vermittlung von Informationen an spezielle Programme können hingegen sinnvoll eigene oder firmeneigene Dokumenttypen verwendet werden. Sobald jedoch Informationen in solch einem privaten Format veröffentlicht werden sollen, ist zuvor eine Konvertierung in einen Standard vorzunehmen, wobei dann immer zu überlegen ist, ob der Standard nicht gleich von vorneherein die optimale Wahl ist.
Neben XSL kann auch CSS zum Layout von XML-Dokumenten genutzt werden. Bei den Standardtypen gibt es teilweise sogar einige Extraeigenschaften, etwa bei SVG. Bei eigenen Formaten ist dem Darstellungsprogramm natürlich nicht bekannt, wie was darzustellen ist, da die Auszeichnungselemente für dieses keine Bedeutung haben und für unbekannte Formate auch keine interne Stilvorlage des Darstellungsprogrammes oder eine des Nutzers vorliegen wird. Soll der Text sinnvoll angezeigt werden, ist auf jeden Fall jedes Element komplett mit Eigenschaften zu versehen. Mit XSL ist ja gar eine Transformation in ein Standardformat möglich.
Besonders wichtig ist die Eigenschaft display
: block
beziehungsweise display
: inline.
display
sollte für jedes Element angegeben werden.
Schauen wir uns erstmal ein einfaches Beispiel eines eigenen Dokumenttypes an:
XML-Beispiel
Es ist allerdings zu beachten, daß Fragmentidenifizierer #id und
Klassen .klasse nicht direkt funktionieren,
Attribute können aber über
Element
[attribut
=Wert]
angesprochen werden. Neu ist auch ein allgemeines Attribut
xml:id
für alle XMLs, mit dem Elemente
eindeutig identifiziert werden können, womit dann auch in CSS
Fragmentidentifizierer #id wieder einsetzbar sein sollten,
sofern das verwendete Darstellungsprogramm neu genug ist. Bei alten Programmen kommt es da zu
Inkompatibilitäten, womit klar ist, daß dieses neue XML-Attribut
das Problem zwar formal löst, aber man in der Praxis damit gerechnet werden muß,
daß es den Programmen etwa im Jahre 2008 noch nicht durchgängig bekannt ist.
Einige Anbieter von Darstellungsprogrammen zeigen sich hier auch in den nächsten Jahren unwillig,
dieses allgemeine Attribut zu implementieren und sabbotieren damit eine weitere Verbreitung
dieser hilfsreichen Funktionalität.
Mich persönlich und vermutlich auch viele andere auch hat an den Standardformaten im Zusammenhang mit CSS allerdings besonders interessiert, skalierbare Vektorgraphik (SVG) mit CSS als Hintergrundbilder einbinden zu können. Zwar konnten bereits etwa 2008 alle technisch aktuellen CSS-Darstellungsprogramme (Opera, Geckos, Konqueror, Amaya) SVG hinreichend für ein Hintergrundbild interpretieren, es war allerdings immer noch festzustellen, daß gerade diese Kombination von SVG und CSS noch nicht klappt (mit Ausnahme von Opera 9.50 alpha/beta), während umgekehrt die Verwendung von CSS für SVG-Dokumente gut funktioniert. In den Folgejahren wurden die Fehler in gängigen Programmen jedoch weitgehend behoben, so daß Hintergrunbilder im Format SVG ähnlich sinnvoll wie Pixelgraphik einsetzbar sind.
Schauen wir uns zum Zwecke der allgemeinen Erbauung ein Beispiel mit gemischten
XML-Standards an.
Opera 9.50 beta hat nunmehr eine bereits brauchbare Darstellung für
MathML
und kann SVG-Hintergrundbilder darstellen, somit hat dieses Programm
alle Voraussetzungen, das folgende Testdokument korrekt anzuzeigen, scheitert lediglich daran,
daß es die maskierten Umlaute und ß-Ligaturen nicht erkennt. Eine solche Maskierung
ist nicht unbedingt notwendig; die entsprechenden Symbole von MathML etwa
für ein Integral sind allerdings wichtig und werden auch nicht angezeigt.
Werden solche Zeichen nicht gebraucht, funktionieren solche Dokumente also bereits
komplett mit Opera 9.50 beta.
Mal abgesehen vom fehlenden Hintergrundbild und der Darstellung von SVG mit
dem Element img
kommt auch Gecko 1.8 (Firefox, SeaMonkey) mit
SVG-Unterstützung der korrekten Anzeige schon sehr nahe, sofern man ihm
die truetype-Fonts für MathML
installiert hat:
Beispiel
für gemischte XML-Standards
So sollte es eigentlich etwa aussehen, wenn alles richtig angezeigt wird:
PNG-Bild,
wie das obige Beispiel aussehen sollte.