Das folgende Beispiel ist heute — dank
XSL(T) — eigentlich nicht mehr
relevant; es stammt aus der ersten Auflage des Buches. Wir haben
es aus mehreren Gründen auch in der Neuauflage gelassen. Erstens
ist es sehr kurz. Zweitens
zeigt es, dass Netscapes Mozilla bereits sehr früh mit
XML (eingeschränkt) umgehen konnte und
schließlich ist es, so denken wir, immer noch lehrreich, da wir
uns mit den CSS ganz vorsichtig
an das Thema
der Darstellung von XML herantasten können.
Als Beispiel haben wir wohlgeformte XML-Instanzen erstellt, die die Diskografie eines Musikers beschreiben. In diesem Fall handelt es sich um alle Albumveröffentlichungen von Jackson Browne in den siebziger Jahren. Der Kern der Dateien besteht aus dem Titel, der Trackliste, dem Label sowie dem Erscheinungsjahr. Die Instanz für das Album von 1974 sieht so aus (die anderen Dateien drucken wir nicht ab, sie sind identisch aufgebaut):
<?xml version="1.0"?> <?xml:stylesheet type="text/css2" href="jbalbum.css"?> <discography> <TitleBar XML-Link="LINK" Role="HTML" Show="EMBED" href="title.html"/> <album> <artist>Jackson Browne</artist> <title>Late for the sky</title> <tracklist> <track>Late for the sky</track> <track>Fountain of sorrow</track> <track>Farther on</track> <track>The late show</track> <track>The road and the sky</track> <track>For a dancer</track> <track>Walking slow</track> <track>Before the deluge</track> </tracklist> <label>Elektra/Asylum</label> <year>1974</year> </album> <html:img src="sky.jpg"/> <Footer XML-Link="LINK" Role="HTML" Show="EMBED" href="footer.html"/> </discography>
In der zweiten Zeile erhält Mozilla die Anweisung, das Stylesheet aus der Datei jbalbum.css zu laden (heute heißt es xml-stylesheet). Die Angabe des Typs text/css2 stellte sich als zu optimistisch heraus. Im Stylesheet mussten wir uns auf CSS1 beschränken:
album { Display: Block ; background-color: white ; float : right ; padding : 10 pt} title { Display: Block; font-size : 24pt ; font-family : Times, serif ;} artist { Display: Block ; font-size: 30pt ; font-family : Times, serif } tracklist { Display: block ; margin-left:14pt; font-size: 20pt ; padding : 10pt } track { Display: Block ; font-family : sans-serif} year { Display: Block ; font-family : sans-serif } label { Display: Block ; font-family : sans-serif }
Wie Sie sehen, die Formatierungen sind sehr begrenzt. Dies liegt vor allem daran, dass die Testversion des Browsers sehr absturzanfällig war.
Unter Verwendung des HTML-Namespace wird in der XML-Instanz eine Grafik (das Plattencover) eingefügt.
<html:img src="sky.jpg"/>
TitleBar am Anfang der Datei und Footer schließen den XML-Teil in zwei HTML-Fragmente ein, die wie folgt aussehen:
<html> <head> <title>Jackson Browne Discography</title> </head> <body background="sky_tile.gif"> <h1>Jackson Browne Discography '72 - '77</h1> ... <br clear="all"> <hr noshade="noshade" width="66%" size="1"> <div align="center"> Please select: <a href="http://www.mintert.com/xml/mozilla/">ToC</a> <a href="jb1.xml">1972</a> <a href="jb2.xml">1973</a> <a href="jb3.xml">1974</a> <a href="jb4.xml">1976</a> <a href="jb5.xml">1977</a> </div> <hr noshade="noshade"> <address>© Stefan Mintert; XML examples from the book <a href="http://www.mintert.com/xml/">XML in der Praxis</a> </address> </body> </html>
Diese HTML-Fragmente lassen sich bequem in jede XML-Datei einbetten, ähnlich wie es bisher schon mit Bildern in HTML möglich ist. Das Ergebnis der oben gezeigten Instanz im Browser zeigt Abbildung 30.
Die Fähigkeiten der CSS sind sehr begrenzt. So können zum Beispiel keine Reihenfolgeänderungen der Elemente ausgeführt werden. Für solche und viele andere Fälle braucht man eine Transformationssprache.