Upload
yogolain
View
223
Download
1
Embed Size (px)
DESCRIPTION
buch
Citation preview
B/016/0210
Das XML-Cocktailbuch
Universittsrechenzentrum
Thomas FeuerstackJens Vieler
Beratung und IT-Services
FernUniversitt, Oktober 2002
2
Inhaltsverzeichnis
1 Aperitif 1
1.1 Wie dieses Kapitel zu seinem Namen kam . . . . . . . . 1
1.2 Wer sollte diese Broschre lesen? . . . . . . . . . . . . 2
2 Bargeflster 3
2.1 Aufgeschnappte Satzfragmente . . . . . . . . . . . . . . 3
2.2 XML die Zutatenliste . . . . . . . . . . . . . . . . . 4
2.3 Verwandtschaften: HTML, SGML, XHTML, . . . . . . . 5
2.4 Aufgaben zur Selbstkontrolle . . . . . . . . . . . . . . . 7
3 Was alles in den Shaker kommt 9
3.1 Aufbau eines XML-Dokuments . . . . . . . . . . . . . 10
3.2 Elementinhalte . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Marken in XML und HTML. . . . . . . . . . . . . . . . . 12
3.4 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5 Warum Character Data nicht einfach Text ist . . . . . . . 15
3.6 Namen: nur Schall und Rauch? . . . . . . . . . . . . . . 16
3.7 Aufgaben zur Selbstkontrolle . . . . . . . . . . . . . . . 18
4 Gerhrt und geschttelt 19
4.1 Aus Zutaten wird ein Drink, oder: Der Parser . . . . . . 19
4.2 oder 0000000 00000000 00000000 11000100? . . . . . 22
4.3 XML arbeitet . . . . . . . . . . . . . . . . . . . . . . . 23
4.4 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5 Aufgaben zur Selbstkontrolle . . . . . . . . . . . . . . . 30
iv Inhaltsverzeichnis
5 Was alles in den Shaker darf 31
5.1 DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Elemente . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4 Entitten . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.5 Parameter-Entitten . . . . . . . . . . . . . . . . . . . . 47
5.6 Generelle Entitten . . . . . . . . . . . . . . . . . . . . 47
5.7 Notationen . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.8 Aufgaben zur Selbstkontrolle . . . . . . . . . . . . . . . 51
6 Unbekannte Rezepturen 53
6.1 Namensrume oder: Der Ehren-Codex der Barmixer . . 53
7 Auf Ex Anwendungsbeispiele 57
7.1 Serverside xml2html mit PHP . . . . . . . . . . . . . . 58
7.2 xml2tex mit Java . . . . . . . . . . . . . . . . . . . . . 58
A Auflsung aller Aufgaben 63
B Programm-Listings 65
B.1 xml2html mit XSL . . . . . . . . . . . . . . . . . . . . 65
B.2 Serverside xml2html mit PHP . . . . . . . . . . . . . . 66
B.3 xml2tex mit Java . . . . . . . . . . . . . . . . . . . . . 70
I Index 73
1 Aperitif
Manhattan (Aperitif)1dash : Angostura Bitter4cl : Canadian Whisky2cl : Vermouth Rosso
DekorationCocktailkirsche
MixanleitungAlle Zutaten im Mixglas mit viel Eis verrhren. Danach in eine gut gekhlteCocktailschale abseihen und mit der Cocktailkirsche garnieren.
1.1 Wie dieses Kapitel zu seinem Namen kam
ist eigentlich noch die einfachste der zu diesem Zeitpunkt zu beantwor-tenden Fragen. Eine Broschre die den Namen Das XML-Cocktailbuchtrgt und sich damit in doppelter Hinsicht mit hochgeistigen Genssenbeschftigt kann folgerichtig nur mit einem Aperitif beginnen.
Die Frage msste daher eigentlich lauten Wie diese Broschre zu ihremNamen kam und eine Antwort darauf drfte ungleich schwerer zu ge-ben sein. Bekanntermassen lsst sich der Funke der Inspiration, soferner denn erstmal gezndet hat, schwerlich auf seinen Auslser zurckfh-ren eines Morgens wacht man auf und wei mit Sicherheit, dass mandemnchst ein XML-Cocktailbuch schreiben wird.1
Fr den Fall, dass Sie zu dem Menschenschlag gehren, der immer allesganz genau wissen muss, knnen Sie sich eventuell aus den folgendenAnhaltspunkten etwas zusammenbasteln.
Wer uns (in diesem Fall die Autoren) kennt wei, dass uns die Er-stellung einer rein technisch orientierten Broschre viel zu drgeist.
Ganz nebenbei existieren fr unseren Geschmack bereits viel zuviele XML-Einfhrungen, XML-HowTos, XML fr Dummies undwas der Markt traditionell sonst noch fr den/die vermeintlich Un-bedarfte(n) hergibt.
1 Oder haben Sie jemals eine rationale Begrndung fr die Entstehung von Beethovens9. Sinfonie gehrt?
2 1 Aperitif
Wie bei jedem Rezeptbuch soll der Inhalt natrlich Geschmackauf mehr machen; Sie sollten daher tunlichst daran gehen, die be-schriebenen Inhalte selbst auszuprobieren.
Last not least, fr die konomisch denkenden LeserInnen: SollteIhnen der Inhalt dieser Broschre nicht zusagen, so knnen Siewenigstens noch die abgedruckten Rezepte verwerten die An-schaffung hat sich also auf alle Flle gelohnt.
1.2 Wer sollte diese Broschre lesen?
Prinzipiell alle, die schon immer mal wissen wollten, was es denn defacto mit der neuen(?) Wunderwaffe XML so auf sich hat. Sollten Siedarberhinaus noch ein paar nette Ideen fr Ihre nchste Gartenpartysuchen, so haben Sie gewissermaen in einem Abwasch die Gelegenheit,das Angenehme mit dem Ntzlichen zu verbinden.
Fans von Hochglanzwerbematerial werden dagegen eher nicht auf ihreKosten kommen. Zum einen gestatten wir uns auf den kommenden Sei-ten auch durchaus kritische Anmerkungen zu XML, zweitens knnen wiruns die umfeldspezifischen Schlagwrter meist selbst nicht merken, und last not least wrde eine Reproduktion dieser Broschre auf Hoch-glanz unseren mageren Universittshaushalt bei weitem bersteigen.
In diesem Sinne, der Manhattan ist angerichtet Prost!
2 Bargeflster
Troubleshooter (Longdrink)4cl : Asbach Uralt1 : Limette1EL Rohrzucker, braun1/2 Zitrone
Fanta Pink GrapefruitCrushed Ice
DekorationZwei Strohhalme in das Glas lehnen.
MixanleitungDie Limette in Achtel schneiden und in einem Longdrinkglas, beispielsweisemit Hilfe eines Caipirinha-Stels, zerstoen.Den Rohrzucker und den Zitronensaft zugeben und das Glas zu knapp 3/4 mitdem gestoenen Eis auffllen. Mit Asbach Uralt und Pink Grapefruit bis zumRand auffllen.
2.1 Aufgeschnappte Satzfragmente
Je nach baulicher Beschaffenheit der von Ihnen gewhlten Bar und meis-tens auch abhngig von dem Umstand, ob Sie allein oder in Begleitunggekommen sind, ist es beinahe unvermeidlich, dass Sie an den Gespr-chen der anderen Gste, nun sagen wir einmal teilhaben.
Meist sind es nur Satzfragmente, die wellenartig zu Ihnen durchdringen;dennoch kann der Inhalt umso interessanter sein. So erzhlte neulich,meiner ungewollten Teilhaberschaft berhaupt nicht gewahr, eine Ha-generin ihrer Begleitung, dass ihr Schwager (?) seinen diesjhrigen Ur-laub irgendwo auf dem Balkan in Reykjavik verbracht habe.1In Bezug auf XML sind die im Umlauf befindlichen Gerchte kaum we-niger abenteuerlich. Aussagen die von XML als neuer Internetspracheknden, hufig gekoppelt mit dem Zusatz, dass es mittlerweile unntigist, HTML zu lernen, sind dabei die eher harmloseren Vertreter ihrer Art.
Daneben finden sich auch gern Zitate, die von der beinahe grenzenlo-sen Formatierbarkeit eigener Dokumente berichten, bis hin zu der Tat-sache, dass auch das leidige Austauschen verschiedenster Dokumentfor-mate durch XML endlich das ersehnte positive Ende gefunden hat.
1 Zu ihrer Ehrenrettung sei gesagt, dass der schwgerliche Urlaubsort spter dann dochglasweise Stck fr Stck weiter nach Norden verlegt wurde.
4 2 Bargeflster
Als Fazit lsst sich feststellen, dass ohne XML zuknftig wohl nichtsmehr geht, oder plakativer:
XML ist die Lsung fr alle Probleme berhaupt.Erstaunlich, nicht wahr? Denn als Kunde einer konsumorientierten Um-welt sollten Sie eigentlich genug Erfahrung gesammelt haben um zuwissen, dass bei extrem angepriesenen Super-Angeboten der Pferdefuschon irgendwo versteckt sein wird. Mit knapp zwanzigjhriger Berufs-erfahrung knnen wir zudem beisteuern, dass wir in jedem dieser Jahremindestens eine Lsung fr alle Probleme haben kommen (und auchwieder gehen) sehen.Deshalb erstmal keine Panik, gemeinsam werden wir den Cocktail schonschtteln. Nippen wir also nochmal am Troubleshooter und raisonierendabei: Was ist nun dran an/drin im XML?
2.2 XML die Zutatenliste
Schaut man sich das Konglomerat XML etwas genauer an, so wird manschnell feststellen, dass das Rad bei weitem nicht neu erfunden wurde,im Gegenteil: das meiste wird Ihnen wahrscheinlich ziemlich bekanntvorkommen. Konkret ausgefhrt bedeutet dies:
Die Abkrzung XML steht fr EXtensible Markup Language, alsoauf Deutsch: erweiterbare Auszeichnungssprache.
Durch XML sollen ASCII-, also textzeichenbasierte Dokumente,mit einer Struktur versehen werden. Dies geschieht (Stichwort:Markup Language) durch Auszeichnungen in Form von Start- undEnde-Tags und sollte bereits jetzt zu Deja-vu-Effekten fhren.Erstes Beispiel: Wir nehmen denTroubleshootergerhrt und nicht geschttelt.
XML ist eine Meta-Auszeichnungssprache, ber die Elemente an-Kapitel 2.3 auf dernchsten Seite derer Auszeichnungssprachen definiert werden knnen. Hierzu
werden die bentigten Elementnamen, deren Inhaltsstruktur, Attri-bute, etc. festgelegt und knnen darberhinaus wahlweise in einerRegeldatei gespeichert werden.
Die Darstellung, Verarbeitung und Verknpfung von Daten gehrt! dagegen nicht zur Aufgabe von XML und ist damit auch nichtInhalt dieser Broschre!
Entsprechende Umsetzungen werden durch Co-Standards, die un-mittelbar auf XML aufbauen, wie XSL, XPath, XLink oder imsimpelsten Fall CSS realisiert.
Strukturierung und Auszeichnung von Daten ist beileibe nichtsNeues. Im Gegensatz zu proprietren Lsungen, beispielsweiseMicrosofts Word-Format oder Pagemaker, ist XML ein offener,
2.3 Verwandtschaften: HTML, SGML, XHTML, . . . 5
gut dokumentierter Standard, der von jedem eingesehen werdenkann.
Fazit: XML ist daher gut fr einen Datenaustausch geeignet was! aber auf keinen Fall damit gleichbedeutend ist, dass fr diesenZweck auch geeignete Werkzeuge oder Anwendungen existieren!
2.3 Verwandtschaften: HTML, SGML, XHTML, . . .
Eines der am weitest verbreitetsten Vorurteile besagt, XML wre derletztendliche Nachfolger von HTML und wrde dieses in naher Zukunftkonsequenterweise ersetzen. Was ist davon zu halten?
Der Blick auf die Verwandschaftsverhltnisse zeigt, dass HTML einespeziell fr das WWW konzipierte Anwendung von SGML2 ist, das heit,es wurde auf Grundlage der fr SGML gltigen Auszeichnungsregelndefiniert in Analogie dazu knnen Sie auch von Ihren spter erzeugtenXML-Dokumenten als Anwendungen sprechen.
Im Gegensatz dazu ist XML hingegen eine Seiten-(Weiter-?)Entwicklungvon SGML und zu dieser voll kompatibel. Ein Vergleich zwischen XMLund HTML drfte daher ausgehen wie die klassische Vorlage mit denpfeln und Birnen.Wenn also etwas mit HTML verglichen werden kann, so muss dies aufder Ebene der Anwendungen geschehen. Eine Anwendung die sich da-fr anbieten wrde, also eine von XML, ist beispielsweise XHTML Abbildung 2.1 zeigt dies noch einmal bersichtlicher.
Abbildung 2.1: XML und seine Verwandtschaftsgrade.
In Analogie dazu muss sich XML also mit SGML messen. Prinzipiellsind sich beide Sprachen sehr hnlich, jedoch sind die Mglichkeiten vonXML bewusst eingeschrnkt worden ohne dabei allerdings wesentlicheVorteile zu verlieren; zumindest sagt man so. XML ist durch diese Ma-nahme robuster als SGML; darberhinaus sind Programme zur Verar-beitung von XML-Dokumenten, beziehungsweise XML-Anwendungen,einfacher zu erstellen.
2 SGML = Standard Generalized Markup Language
6 2 Bargeflster
Dazu noch eine Bemerkung am Rande: Gerade dieser letzte Punkt sorgtunter XML-Autoren hufig fr Unmut. Prinzipiell soll es ja der Com-puter sein, der die Arbeit des Anwenders erleichtert. Bei der Erstel-lung von XML-Dokumenten hat jedoch, aufgrund der im Vergleich zuSGML eingeschrnkten XML-Strukturen, in jedem Fall der Autor mehr(Schreib-)Arbeit zu leisten.
2.4 Aufgaben zur Selbstkontrolle 7
2.4 Aufgaben zur Selbstkontrolle
Versuchen Sie, mglichst ohne Zuhilfenahme der Unterlagen, die folgen-den Fragen zu beantworten, bzw. die Stze zu vervollstndigen:
1. XML ist die Abkrzung fr:
(a) Standard Generalized Markup Language(b) Extensible Markup Language(c) Hypertext Markup Language(d) nichts von allem
2. Welche der folgenden Aufgaben wird nicht durch XML gelst:
(a) Strukturierung von Datenmengen(b) Auszeichnung von Dokumenten(c) Formatierung von Dokumenten(d) Vorbereitung von Dokumenten zum Austausch zwischen
verschiedensten Anwendungen
3. Welche der folgenden Aussagen ist richtig:
(a) XML ist eine Erweiterung von HTML(b) XML ist eine Anwendung von XHTML(c) XML ist flexibler als SGML(d) XML ist die pragmatische Variante von XHTML(e) Nichts davon ist richtig
Eingaben lschen Aufgaben lsen
8 2 Bargeflster
3 Was alles in den Shaker kommt
Angels Face (Cocktail)1cl : Apricot Brandy1cl : Calvados3cl Gordons Dry Gin
Eiswrfel
MixanleitungIn den Shaker einige Eiswrfel geben und den Gin, Calvados und Brandydazu. Kurz schtteln und in ein Cocktailglas abseihen. Schmeckt ganz sanft verleiht aber nach ein paar Glsern Flgel.
Farben und ihre Bedeutung
Bis auf wenige Ausnahmen ist ein Cocktail eigentlich immer eine sehrfarbenfrohe Angelegenheit. Dies liegt nicht nur daran, dass sich das WortCocktail mit Hahnenschwanz der sich ebenfalls hufig stark kolo-riert darstellt bersetzen lsst: sptestens nach zwei bis drei Glsernwird auch die eigene Umgebung merklich bunter.
Aus diesem Grund, und nicht zuletzt wegen der besseren bersichtlich-keit, haben wir versucht, das Prinzip Farbe in diese Broschre zu in-tegrieren. Wenn Sie daher im Folgenden auf farblich unterlegte Begriffestoen, so bedeutet dies im Einzelnen:
Blau : kennzeichnet Marken, Attribute, Anweisungen, etc. die sich imWurzelelementbereich eines XML-Dokuments befinden.
Grn : hat prinzipiell die gleiche Bedeutung wie Blau fr den Prolog ei-nes Dokuments.
Orange : ist zu behandeln wie Blau und Grn, die betroffenen Elemente be-finden sich jedoch im Bereich Diverses. Das Rtsel um die Be-griffe Wurzelelementbereich, Prolog und Diverses wird direkt imfolgenden Kapitel aufgelst.
Rot : hat dafr generell zwei Bedeutungen. Zu einen haben wir damitfehlerhafte Anweisungen oder Befehle markiert. In der PDF-Versi-on dieser Broschre sind die restlichen rot markierten Textstellen,zum Beispiel das Inhaltsverzeichnis, anklickbar. Wir hoffen, dassaus dem jeweiligen Umfeld ersichtlich ist, ob es sich um einenFehler oder eine anklickbare Stelle handelt.
10 3 Was alles in den Shaker kommt
Magenta : ist nicht nur fr die Deutsche Telekom reserviert. In dieser Far-be hinterlegte Textstellen knnen ebenfalls angeklickt werden undfhren direkt zu externen Web-Adressen oder Download-Berei-chen.
Die Leidtragenden dieses Verfahrens sind wahrscheinlich diejenigen, diedieses Skript monochrome gedruckt ber den Dispatch bestellt haben,anstatt es farbig und umsonst aus der Leseecke zu ziehen. Nichtsdesto-trotz haben wir uns bemht,1 die aus einer Schwarzweidarstellung be-dingten Benachteiligungen so gering, wie mglich zu halten.
3.1 Aufbau eines XML-Dokuments
Der rein formale Aufbau eines XML-Dokuments lsst sich wohl amEinfachsten anhand eines Beispiels verdeutlichen schauen wir daherBeispiel 3.1 auf der
nchsten Seite den Engeln ins Gesicht und uns den Angels Face in XML-Notation an.
Die generelle Struktur eines XML-Dokuments unterteilt sich in die dreiSektionen Prolog, Wurzelelementbereich und Diverses.
Innerhalb jeder Sektion knnen Markups, im Allgemeinen Start- undEnde-Tags sowie Entitten, als auch Character Data enthalten sein. Be-vor es deshalb weitergeht, sollten wir sicherheitshalber noch detaillierterauf die oben vorgestellten und fr Sie wahrscheinlich neuen Begriffe ein-gehen.
Markups : Wie Ihnen vielleicht schon aufgefallen ist, werden Auszeichnun-gen in XML durch das sogenannte Markup-Prinzip realisiert. Diesbedeutet, dass der auszuzeichnende Text jeweils durch eine ff-nende und schlieende Marke umklammert ist.
Anstelle von Marke wird auch hufig der Begriff Tag verwen-det. Der Dokumentbereich von einer ffnenden bis hin zur schlies-senden Marke wird als Element bezeichnet.
Entitt : Vorsichtig ausgedrckt bernimmt eine Entitt (oder Entity) dieFunktion eines Textbausteins, d.h. die im Dokument vorhandeneZeichenkette wird durch einen Text ersetzt, der ansonsten nichtoder nur umstndlich dargestellt werden knnte.
Da der obere Satz immer noch sehr kompliziert klingt, hier einBeispiel: Das bekannte Kaufmanns-Und (&), wird sowohl inHTML als auch in XML durch die Entitt & dargestellt Kapitel 3.5 wird sich noch ausfhrlicher mit dem Thema Entittenbeschftigen.
Character Data : Als Character Data wird nun folgerichtig alles bezeichnet, wasnicht in die Bereiche Markup oder Entitt gehrt also im Nor-malfall Text.
1 Ein nachtrglicher Dank geht hiermit an unsere Deutsch-Lehrerinnen und -Lehrer.
3.2 Elementinhalte 11
Angels Face
Apricot Brandy1cl
Calvados1cl
Gordons Dry Gin3cl
Eiswrfel
In den Shaker einige Eiswrfel geben...
Beispiel 3.1: Angels Face diesmal ganz in XML
3.2 Elementinhalte
Im Gegensatz zu seiner Bedeutung beginnen wir bei der detailliertenAnalyse des XML-Cocktails nicht mit dem Prolog, sondern wenden unszuerst dem Bereich des Wurzelelements zu, da dieser den eigentlichenDatenbestand enthlt. Denjenigen unter Ihnen, die HTML nicht nur inZusammenhang mit Spezialeditoren kennen, werden durchaus hnlicheZge entdecken; der Ordnung halber gibt es aber auch hier nochmal denstrukturierten berblick.Wie oben bereits gezeigt, besteht ein Element normalerweise aus Cha-racter Data, welches durch Marken geklammert ist.
Angels Face
Natrlich knnen Elemente auch verschachtelt werden, wobei Sie jedoch
12 3 Was alles in den Shaker kommt
auf die genaue Verschachtelungsreihenfolge zu achten haben.
Apricot Brandy1cl
Eine besondere Bedeutung hat das leere Element, fr das in XML zweiDarstellungen existieren. Alternativ zu einem Element ohne CharacterData
Eiswrfel
wird hufig, wie in Beispiel 3.1, die Kurzschreibweise gewhlt.2
Ebenfalls erlaubt, aber uerst unschn, ist die Mischung von Character! Data und weiteren Elementen, beispielsweise
Beim Abmessen der Zutaten ist aufuerste Genauigkeit zu achten!Apricot Brandy1cl
Da eine solche Vermixung zwar den Geschmack des Cocktails steigernkann, auf keinen Fall jedoch die Lesbarkeit Ihres XML-Dokuments, soll-ten Sie auf Konstrukte dieser Art besser verzichten.
3.3 Marken in XML und HTML. . .
Wie im letzten Kapitel gezeigt, orientiert sich das Handling der Markenoder Tags stark an HTML. Hre ich da irgendwo einen leisen Wider-spruch? Richtig sofern Sie diese Broschre aufmerksam verfolgt habenwissen Sie bereits, dass es eigentlich umgekehrt ist.
Da HTML eine Anwendung von SGML ist, welche wiederum als der l-Abbildung 2.1 auf Seite 5tere Bruder von XML angesehen werden kann, geben XML, bzw. SGMLdie Regeln vor, woran sich die Anwendungen zu orientieren haben.
Schauen wir nochmal genauer hin:
Angels Face
2 In HTML werden leere Elemente hufig durch eine einzelne, ffnende Marke (Bei-
spiel: ) dargestellt. Wir wir noch sehen werden, ist dies nach den Konventionenvon XML nicht gestattet.
3.3 Marken in XML und HTML. . . 13
. . . Gemeinsamkeiten. . .
Wie bereits mehrfach erwhnt, existiert zu jeder ffnenden Marke() ein schlieendes quivalent () mit fh-rendem /. Natrlich ist auch die Schachtelung von Marken erlaubt,wobei das bliche Last-in-First-Out-Prinzip gilt. Das heisst, dass diezuletzt geffnete Marke als erste wieder geschlossen werden muss; Mar-kenberschneidungen sind verboten.
. . . und Unterschiede
Da XML keine eigene Anwendung ist, sondern Sie ja selbst mit IhremDokument eine Anwendung auf XML definieren, sind Ihrer Kreativittbei der Auswahl Ihrer Markennamen kaum Grenzen gesetzt.3
Unbedingt beachten, da von HTML wahrscheinlich eher ungewohnt, soll-ten Sie jedoch die folgenden Punkte:
Jede XML-Marke muss ein schlieendes quivalent besitzen. Ein! Ausnahme bilden lediglich leere Elemente, die durch die Sonder-form dargestellt werden knnen.
Gro-/Kleinschreibung wird strikt unterschieden. Ein Element
Angels Face
ist fehlerhaft, weil hier, wie bereits oben erwhnt, zu einem ff-nenden Tag kein schliessender existiert.
Innerhalb eines XML-Dokuments existiert genau ein (!) Wurzel-element, welches smtliche weiteren Elemente enthlt und dessenName nicht mehrfach verwendet werden darf. In unserem BeispielBeispiel 3.1 auf Seite 11ist dies das Wurzelelement .
Leerraum4 zwischen der ffnenden Klammer und dem Markenna-men ist verboten. Ein Leerraum vor dem abschlieenden > istdagegen erlaubt.
< name>Angels Face
3 Die wenigen festgelegten Namensbeschrnkungen werden ein paar Seiten spter auf-gefhrt, da sie auch Attribute und Entitten betreffen.
4 Unter Leerraum werden die Zeichen verstanden, die bei der Auswertung des XML-Dokuments gewissermassen berlesen, bzw. auf ein Leerzeichen verkrzt werden. Da-zu gehren das Leerzeichen (Blank) selbst, der Tabulator, Zeilenwechsel (LF), sowieder Wagenrcklauf (CR).
14 3 Was alles in den Shaker kommt
3.4 Attribute
Wie nicht anders zu erwarten, knnen natrlich auch XML-Marken durchAttribute erweitert bzw. variiert werden.
Als Beispiel ergnzen wir unser Element durch das Attributklassifizierung, welches Werte wie Longdrink, Cocktail, Fizz,u.v.a.m. annehmen soll, damit jeder Cocktail einer bestimmten Spartezugeordnet werden kann.
Angels Face
...
Auch die Verwendung von Attributen ist bestimmten Regeln unterwor-fen, die wir Ihnen an dieser Stelle daher auch nicht vorenthalten wollen.
Die Angabe von Attributen ist nur in einer ffnenden Marke zuls-sig.
Werden mehrere Attribute gesetzt, so ist die Reihenfolge beliebig.
Attribute mssen zwingend mit Werten versehen werden; Attribut-werte werden durch Quotes () oder Apostrophe () geklammert.
Vor oder nach dem Gleichheitszeichen darf Leerraum stehen.
Werden einem Attribut mehrere Werte zugeordnet, so sind diesemit Leerzeichen voneinander zu trennen.
Quotes und Apostrophe drfen alternativ geschachtelt werden.
Angels Face
Die Verwendung des
3.5 Warum Character Data nicht einfach Text ist 15
Angels Face
Angels Face
Die mehrfache Angabe des gleichen Attributs ist nicht erlaubt.
Angels Face
3.5 Warum Character Data nicht einfach Text ist
Wir haben bereits gelernt, dass ein Elementinhalt nicht einfach als Textsondern als Character Data bezeichnet wird. Hintergrund des Ganzen istnicht (nur), dass wir eine weitere Fachvokabel einfhren wollten; in derTat knnen einzelne Zeichen ein auf den ersten Blick etwas befremdli-ches Aussehen haben.
Beginnen wollen wir dabei mit den Zeichen, die logischerweise maskiertwerden mssen weil sie generell innerhalb von XML fr andere Aufga-ben vorgesehen sind. Dies sind im Einzelnen:
Zeichen eigentliche Bedeutung Ersatzdarstellung (Entitt)< Markenbeginn Markenende >& Entittsbeginn &" Attributwert " Attributwert '
Die notorischen Problembereiter Umlaute mssen aufgrund der Tatsa-!che, dass in einem XML-Dokument stets eine Kodierung vorhanden ist,nicht gesondert maskiert werden warum das so ist, werden wir nochgenauer in Kapitel 4.2 auf Seite 22 sehen.
Die oben gezeigte Ersatzdarstellung wird auch als Entitt bezeichnet undist nicht nur auf die bereits gezeigten Zeichen beschrnkt, sprich: Sieknnen selbst nach Lust und Laune eigene Entitten definieren.5
Daneben kann jedes andere Zeichen als Entitt mit Dezimal-,Hexadezimal- oder UCS-4-Codierung dargestellt werden. Aus diesemKapitel 4.2 auf Seite 22Grund sind die beiden folgenden Elemente identisch:
5 berraschenderweise bersetzt uns Langenscheidts Taschenwrterbuch Englisch denBegriff Entity mit Wesen(heit), Dasein, bzw. juristische Person ;-)
16 3 Was alles in den Shaker kommt
Angels FaceAngel's Face
Lngere oder komplexereSonderzeichenpassagen knnen mit Hilfe desCDATA-Abschnitts eleganter konstruiert werden, auch wenn dessen Be-nutzung anfnglich etwas kryptisch erscheint.
...
In den Shaker 200ml, gibts bei Schluckspecht & Sohn)]]>einige Eiswrfel geben und den Gin, Calvados und Brandydazu....
Die Funktionsweise von CDATA ist dabei eigentlich recht simpel: AlleZeichen zwischen werden ohne Interpretations-versuch berlesen Sie sollten sich ganz nebenbei gesprochen bereitsdie Frage beantworten knnen, warum wohl die Verwendung der Zei-chenfolge ]]> innerhalb eines CDATA-Abschnitts verboten ist.
Vielleicht sind Sie im letzten Absatz ber den Begriff Interpretations-versuch gestolpert und fragen sich nun, wer denn eigentlich Ihr XML-Dokument irgendwann mal interpretiert.
Belassen wir es hier noch mit der Antwort: Der Parser. Die genaueFunktion eines XML-Parsers erfolgt dann in Kapitel 4.
3.6 Namen: nur Schall und Rauch?
Aus dem Kapitel Marken in XML und HTML wissen Sie bereits, dassSie die Namen fr Marken relativ frei vergeben knnen, dies gilt unterKapitel 3.3 auf Seite 12anderem auch fr die Benennung von Attributen und Entitten.
Die Verwendung des Wrtchens relativ weist an dieser Stelle schondarauf hin, dass dieser Freiheit irgendwo auch Grenzen gesetzt sind. FrMarken, Attribute und Entitten sind diese Grenzen an den folgendenStellen erreicht:
Das erste Zeichen eines Namens muss ein Buchstabe aus dem! Unicode-Zeichensatz (UCS), ein Unterstrich (_) oder ein Doppel-punkt (:) sein.Ab dem zweiten Zeichen knnen zustzlich Ziffern, der Binde-strich (-) oder ein Punkt (.) verwendet werden. Kaum zu glauben,aber wahr: das Konstrukt
Cocktailkirsche
3.6 Namen: nur Schall und Rauch? 17
ist in XML ein korrekt benanntes Element.
Vorsicht bei der Verwendung des Doppelpunktes! Dieser wird auchin Zusammenhang mit Namensrumen benutzt, was gelegentlichKapitel 6.1 auf Seite 53zu Konflikten fhrt.
Die Zeichenfolge XML ist in jeder Form der Gro-/Kleinschrei-bung fr das W3Consortium reserviert und darf daher nicht zu Be-ginn eines Namens verwendet werden. Nicht erlaubt sind daherNamen wie XMLBar, xMLCocktail, XmlShaker, . . .
18 3 Was alles in den Shaker kommt
3.7 Aufgaben zur Selbstkontrolle
Bewerten Sie, mglichst ohne Zuhilfenahme der Unterlagen, die Rich-tigkeit der folgenden XML-Konstrukte:
1. Swimmingpool
Korrekt Falsch
2.
Korrekt Falsch
3. Cream of Coconut
Korrekt Falsch
4. Sahne
Korrekt Falsch
5. Alle Zutaten im Shaker mitEiswrfelnvermixen
Korrekt Falsch
6. EinCocktailschirmchen
Korrekt Falsch
7.
Korrekt Falsch
Eingaben lschen Aufgaben lsen
4 Gerhrt und geschttelt
B52 (Shooter)3cl : Tia Maria3cl : Baileys Irish Cream1/2cl Captain Morgan Jamaika Rum
MixanleitungZuerst den Tia Maria, dann den Baileys in ein kleines, maximal 8cl fassendes(hitzebestndiges!) Glas geben. Dabei darauf achten, dass die Likre nichtallzusehr ineinander flieen.Obenauf eine Schicht von ca. 1/2cl Captain Morgan Rum geben, dessen 70%Alkohol gleich mit Hilfe eines Feuerzeugs entzndet werden.Einen Strohhalm hineinstecken, kurz durchatmen und ganz schnell austrinken.Vorsicht! Der Strohhalm mag keine Hitze!
4.1 Aus Zutaten wird ein Drink, oder: Der Parser
Bislang haben wir uns ausschlielich mit dem Problem beschftigt, Da-ten XML-konform anzulegen. Dabei ist ein wenig die Frage vernachls-sigt worden, wer die strukturierten Daten letztendlich aufbereiten, wei-terverarbeiten, darstellen soll.
Sofern Sie sich immer noch nicht und trotz dieser Broschre von demGedanken gelst haben, dass dies die Aufgabe eines WWW-Browsersist, liegen Sie leider total falsch. Die WWW-Sprache ist nach wievor HTML; denkbar wre hchstens ein Konverter, der Ihre XML-Datennach HTML berfhrt, welches dann wiederum. . .
Denkbar ist natrlich auch ein Programm, welches Ihre XML-Daten inein Word-Format, eine Oracle-Datenbank oder gleich in PDF umsetzt.Damit befinden wir uns in Bereichen, die gnzlich auerhalb des WWWliegen und ein entscheidender Vorteil von XML ist letztendlich diemediale Unabhngigkeit.
Natrlich gibt es bislang keine Applikation, welche alle oben aufgefhr-ten Wnsche direkt umsetzt. Es existieren jedoch Programme, welche dieFhigkeit besitzen, Ihr XML-Dokument zu lesen, die darin enthaltenenMarkups zu erkennen und nicht zuletzt die wiederum darin befindlichenDaten zu extrahieren. Diese Programme heien Parser.
Um es noch einmal deutlich auszusprechen: Ein Parser ist nicht in der! Lage, und es gehrt auch nicht zu seinen Aufgaben, Ihre XML-Dokumen-te in irgendein anderes Format umzuwandeln oder fr den Bildschirm
20 4 Gerhrt und geschttelt
aufzubereiten! Dies ist im Normalfall die Aufgabe eines weiteren undeventuell selbst zu erstellenden Programms, welches in aller Regel einenParser als Komponente benutzt.
4.1.1 Was tut dann ein Parser berhaupt?
Da ein Parser offenbar nichts direkt Verwertbares erzeugt, drngt sichdiese Frage frmlich auf. Trotzdem nimmt Ihnen der Parser jedoch inForm von berprfungen bereits eine Menge Arbeit ab, die sich im We-sentlichen durch die zwei folgenden Begriffe beschreiben lsst:
Wohlgeformtheit : (Original: Wellformated) Um das Prdikat wohlgeformt zu erhal-ten muss das XML-Dokument alle Regeln erfllen, die wir bislangbei der Verwendung von Marken, Attributen, Entitten, etc. ken-Kapitel 3.3, 3.4 und 3.6nengelernt haben.
Gltigkeit : (Original: Validated) Ist das Dokument darberhinaus mit internenoder externen Regeln verknpft, so knnen einige Parser auch diefestgelegten Vorschriften prfen. Sofern dabei keine Fehler auftre-ten, heisst das Dokument gltig.
Abbildung 4.1: Microsofts Internet Explorer besitzt einen eingebautenParser. . .
Es versteht sich von selbst, dass XML-Dokumente, die fr eine externeWeiterverarbeitung vorgesehen sind, die beiden oben aufgefhrten Kri-terien nach Mglichkeit erfllen. Umgekehrt gilt das natrlich auch frDokumente, die Sie zur Weiterverarbeitung bernehmen.
4.1.2 Und wo bekomme ich einen Parser her?
Seit der Version 5 besitzt Microsofts Internet-Explorer einen eingebautenAbbildungen 4.1 und 4.2
4.1 Aus Zutaten wird ein Drink, oder: Der Parser 21
Abbildung 4.2: . . . der auch auf Wohlgeformtheit prft.
Parser (MSXML), der in der Lage ist, die Struktur eines XML-Doku-ments im Browserfenster anzuzeigen und zustzlich die Wohlgeformtheitzu kontrollieren.
Darberhinaus kann von Microsofts Homepage der kostenlose zeilenori-Abbildung 4.4 auf dernchsten Seite entierte Parser xmlint runtergeladen werden, der zustzlich auf Gl-
tigkeit prfen kann.1
Abbildung 4.3: Andere Browser (hier: Mozilla) sind bei weitem nicht sokomfortabel.
Viele Programmiersprachen besitzen mittlerweile eingebaute Routinenoder Klassen, ber die ein interner Parser angesteuert wird. JAVA-Pro-grammierer sollten sich das Package javax.xml.parsers nher an-schauen, whrend fr PHP-Interessierte die Klasse phpxml interessantKapitel 7 auf Seite 57sein kann.
1 Ganz nebenbei ist dieser Parser ist nur 32 KB gro.
22 4 Gerhrt und geschttelt
Abbildung 4.4: Der Parser mit dem wahrscheinlich besten Preis-/Leistungsverhltnis: xmlint
4.2 oder 0000000 00000000 00000000 11000100?
Im letzten Kapitel sind uns ganz nebenbei die ersten vom Parser bemn-gelten Fehler untergekommen. Fr all diejenigen, die dieses Skript frAbbildungen 4.2 und 4.4lau aus der Leseecke gezogen haben und sich daher mit der 72dpi-PDF-Version rumschlagen mssen, sei die entsprechende Fehlermeldung nocheinmal im Klartext dargestellt.
Im Textinhalt wurde ein ungltiges Zeichen gefundenmaximal 8cl fassendes (hitzebest-------------------------------
Genauer gesagt wurde der Fehler in Zeile 18 und Spalte 37 gefunden.Forschen wir in unserer Quelldatei an der angegebenen Position nach, sostoen wir auf ein .
Der technische Hintergrund ist, man ahnt es bereits, ein komplexer undsoll daher an dieser Stelle nur verkrzt und wahrscheinlich eher popu-lrwissenschaftlich wiedergegeben werden.
Generell erwartet der Parser seinen zu parsenden Text, also Ihr XML-Dokument, im Unicode Transformation Format, oder kurz: UTF. UTF istwiederum eine verkrzte Darstellung des Universal Character Set (UCS).ber UCS heit es wiederum auf der Unicode Home Page:
Unicode provides a unique number for every character, nomatter what the platform, no matter what the program, nomatter what the language.
Es geht also um die einheitliche und bergreifende Darstellung der ver-wendeten Zeichen. Was prinzipiell erstmal hervorragend klingt, ist in derPraxis hufig mit Nachteilen behaftet. Im Falle von UCS uert sich derPferdefu darin, dass zur Darstellung jedes Zeichens anstelle des klassi-schen Bytes gleich derer vier bentigt werden, was wiederum bedeutet,dass auch Ihre Dokumente um den Faktor 4 an Gre zunehmen.
4.3 XML arbeitet 23
Abhilfe schaffen hier die komprimierenden UTF-Formate, wobei unsjetzt weniger interessieren soll, wie da genau komprimiert wird,2 sonderneher, wie wir unser XML-Dokument in ein UTF-Format bekommen.
Der einfachste Weg ist hufig der, an den am wenigsten gedacht wird.Tatschlich besitzen mittlerweile viele Editoren, unter anderem, seit Win-Abbildung 4.5dows 2000, das klassische Microsoft Notepad die Mglichkeit, direktin UTF zu speichern.
Abbildung 4.5: Grundstzlich gilt: Sofern nicht anders angegeben, ver-langen Parser ein UTF-Format.
Sofern Ihnen Ihr Lieblingseditor keinen UTF-Filter anbietet, knnen Siedie gewnschte Kodierung alternativ ber das encoding-Attribut imProlog Ihres Dokuments festlegen. Das folgende Beispiel demonstriertdiese Technik.
B52...
Die in diesem Beispiel verwendete Kodierung ISO-8859-1 enthlt denklassischen ASCII-Zeichensatz, sowie alle westeuropischen Sonderzei-chen also all die Zeichen, die in normalen Editoren verwendet wer-den.
4.3 XML arbeitet
Langsam aber sicher verlassen wir den Bereich der Erfassung und wen-den uns dem Problem zu, wie denn unsere Daten aufbereitet werden kn-nen.
Wir erinnern uns: XML selbst beinhaltet lediglich die Mglichkeit, er-fasste Daten ber ein Markup zu strukturieren. Auch der Parser schafft
2 Wer es wirklich ganz genau wissen will kann unter http://www.unicode.orgnachschauen.
24 4 Gerhrt und geschttelt
hier keine Abhilfe, da seine Aufgabe im Wesentlichen darin besteht, dieaufgebaute Struktur zu berprfen.
Die letztendliche Aufbereitung des XML-Dokuments muss daher exter-nen Anwendungen vorbehalten bleiben, die logischerweise mit dem Do-kument verknpft werden mssen. Dies geschieht im Regelfall ber Ver-arbeitungsanweisungen.
Verarbeitungsanweisungen werden normalerweise im Prolog des XML-Dokuments eingefgt, gelegentlich tauchen sie aber auch schon mal hin-ter dem Wurzelelement auf. Die Struktur einer Verarbeitungsanweisungist dabei ausgesprochen schlicht, sie hat die Form
oder, um ein konkreteres Beispiel mit den Verarbeitungsanweisungenxml und xml-stylesheet zu zeigen:
B52...
Fr uns ist momentan noch nicht von Interesse, was alles in Verarbei-tungsanweisungen (im oberen Beispiel die bildschirmgerechte Aufbe-reitung ber XSL) untergebracht werden kann, wichtig ist jetzt erstmaldas Wie.
Rein syntaktisch kommt es dabei lediglich auf die folgenden Punkte an:
Zwischen dem ersten ? und dem Namen darf sich kein Leerzei-chen befinden, eine Verarbeitungsanweisung nicht in der Attributliste auftauchen.
Rein syntaktisch betrachtet ist daher
eine korrekte Verarbeitungsanweisung wer immer sie auch letztendlichumsetzen mag.
4.3.1 Formatierung
Verarbeitungsanweisungen werden hufig dazu benutzt, um aus XML-Dokumenten eine formatierte Ausgabe zu zaubern ganz nebenbei wird
4.3 XML arbeitet 25
diese Broschre dadurch um ein Kapitel ergnzt, mit dem sich wirklichetwas anfangen lsst.
Durch die Verwendung von Verarbeitungsanweisungen existieren netter-weise gleich mehrere Mglichkeiten, aus XML-Anwendungen forma-tierte Ausgaben zu erzeugen.
XSL : (= eXtensible Stylesheet Language) XSL ist gewissermaen eineeigene Programmiersprache, die nicht ganz einfach zu erlernenist. XSL ist kein Bestandteil von XML und damit auch nicht Inhaltdieser Broschre.
CSS : (= Cascading StyleSheets) CSS waren ursprnglich als Format-vorlagen fr HTML gedacht, sie knnen jedoch auch direkt mitXML-Dokumenten verknpft werden. Cascading Stylesheets sindallgemein die simpelste Mglichkeit, XML-Anwendungen Formatzu verleihen.
Halten Sie sich bitte nochmal deutlich vor Augen, dass die Formatierungvon Daten, weder durch CSS noch durch XSL, nicht einmal ansatzweiseBestandteil unseres Kernthemas XML ist. Nichtsdestotrotz knnen auchwir ein gewisse Neugier nicht verhehlen. Lassen Sie uns daher die graueTheorie ein wenig beiseite legen und dafr einen Kurzausflug in die Weltder Darstellung von XML-Dokumenten unternehmen.
26 4 Gerhrt und geschttelt
Exkurs: Aufbereitung durch CSS
Auf den folgenden 1 1/2 Seiten wird demonstriert, wie Sie ein XML-Dokument mit Cascading Style Sheets verknpfen und in einem WWW-Browser darstellen knnen.
Dagobert Duck (Spardrink)1Spritzer: Soda
Leitungswasser
MixanleitungDas Soda in ein Longdrinkglas geben, das Ganze mit Leitungswasser auffl-len.
Der oben aufgefhrte Cocktail wird in XML-Notation in der Datei dd.xmlgespeichert.
Dagobert Duck
Soda1Spritzer
Leitungswasser
Das Soda in ein Longdrinkglas geben, das Ganze mitLeitungswasser auffllen.
Das zugehrige Cascading Stylesheet (bar.css) kann wie folgt reali-siert werden.
4.3 XML arbeitet 27
cocktail { display: block;font-family: sans-serif;background-color: lightgreen;border: solid;
}name { display: block;
font-size: 18pt;color: blue;
}zutat { display: list-item;
font-size: 12pt;}menge {
padding-left: 0.5cm;}mixanleitung {
font-size: 11pt;font-style: oblique;background-color: yellow;display: block;
}
Auch ohne tiefgreifende CSS-Kenntnisse drfte schnell klar werden, wel-che Formate wie angewandt werden.
Die Datei dd.xml kann nun wie eine HTML-Datei in einem WWW-Browser (Internet Explorer ab Version 5, Netscape ab Version 6) geff-net werden. Das erzielte Ergebnis wird je nach den vorhandenen CSS-Fhigkeiten des verwendeten Browsers variieren, es drfte aber Abbil-dung 4.6 sehr nahe kommen.
Abbildung 4.6: Die meisten moderneren Browser (hier: Mozilla) sind inder Lage, XML-Dokumente mit CSS-Anweisungen darzustellen.
Ungleich eleganter wirkt das Ganze, wenn die Aufbereitung, anstatt durchstarre Cascading Style Sheets, via XSL vorgenommen wird. Allein durchden Austausch der entsprechenden Verarbeitungsanweisung
28 4 Gerhrt und geschttelt
...
wird ein Aussehen wie in Abbildung 4.7 erzielt.
Abbildung 4.7: Der gleiche Cocktail, aber anders zubereitet.
Die zugehrigen XSL-Verarbeitungsanweisungen sind im Vergleich zuCSS natrlich komplexer, Sie finden Sie trotzdem im Anhang B.1. Dar-berhinaus wollen wir nicht verheimlichen, dass XSL bislang nur durch! den Internet Explorer umgesetzt werden kann!
Einen Ausweg aus diesen Browserabhngigkeiten bieten sogenannteServerside-Anwendungen wir werden am Ende dieser Broschre dar-Kapitel 7 auf Seite 57auf zurckkommen.
Damit wollen wir unseren Ausflug beenden und zum ursprnglichenThema zurckkehren.
4.3.2 Ganz speziell: Die xml-Verarbeitungsanweisung
Eine Sonderrolle spielt die im Normalfall zuerst auftretende Verarbei-tungsanweisung mit dem Namen xml. Diese muss, falls vorhanden, dieerste aller Verarbeitungsanweisungen im Dokument sein weswegen siesich immer direkt in der ersten Zeile befindet. Zu beachten: Auch Kom-mentare drfen der xml-Verarbeitungsanweisung nicht vorangestelltwerden.
Die xml-Verarbeitungsanweisung gilt auch als Pseudoanweisung, da ihrInhalt, im Gegensatz zu allen anderen Verarbeitungsanweisungen, direktvom Parser bercksichtigt wird.
Prinzipiell drfen der xml-Verarbeitungsanweisung die folgenden dreiAttribute bergeben werden:
4.4 Kommentare 29
version : definiert die Versionsnummer der verwendeten XML-Version. Vor-einstellung: 1.0
encoding : bekommt als Attributwert die verwendete Zeichenkodierung. Vor-einstellung: UTF-8
standalone : beschreibt, ob das Regelwerk fr Marken, Attribute und Entittenim Dokument enthalten ist, oder ber eine externe Document TypeDefinition (DTD) geladen wird. Voreinstellung: no
Die Attribute mssen in der oben angegebenen Reihenfolge aufgefhrt! werden! Eine xml-Verarbeitungsanweisung der Form
wrde vom Parser aufgrund der falschen Reihenfolge als fehlerhaft re-klamiert.
4.4 Kommentare
Kommentare dienen der bersichtlichkeit Ihres XML-Dokuments undhelfen dadurch Ihnen, als auch denjenigen die Ihre XML-Daten weiter-verarbeiten mssen.3
Ganz nebenbei knnen temporr nicht bentigte XML-Anweisungendurch Auskommentieren fr den Parser unsichtbar gemacht werden.
Kommentare beginnen mit der Zeichensequenz .
...
Der Kommentartext darf die Zeichenfolge -- nicht enthalten.!
3 Sie werden aus diesem Grund eher selten an der FernUni benutzt. :)
30 4 Gerhrt und geschttelt
4.5 Aufgaben zur Selbstkontrolle
Versuchen Sie, mglichst ohne Zuhilfenahme der Unterlagen, die folgen-den Fragen zu beantworten, bzw. die Stze zu vervollstndigen:
1. Welche Aussage tifft auf das folgende XML-Dokument zu?
Blauer Kakadu
(a) Das Dokument ist wohlgeformt.(b) Das Dokument ist gltig.(c) Das Dokument ist wohlgeformt und gltig.(d) Das Dokument ist nichts von all dem.
2. Wie mssen innerhalb eines XML-Dokuments Umlaute kodiertwerden?
(a) Umlaute knnen gar nicht verwendet werden, da nurZeichen erlaubt sind, die sich auf den ersten 127 Stellen derASCII-Tabelle befinden (Beispiel: ae).
(b) Umlaute werden generell als Hexadezimal-Entittabgelegt (Beispiel: E4;).
(c) Umlaute mssen nicht besonders behandelt werden,sofern beim Speichern des Dokuments das darin verwendeteEncoding (Beispiel: ISO-8859-1) beachtet wird.
(d) Als Brger der USA interessieren mich Umlauteberhaupt nicht.
3. Welches der folgenden Attribute gehrt nicht in diexml-Verarbeitungsanweisung?
(a) Version(b) standalone
4. Was passiert, wenn ein XML-Dokument in einemWWW-Browser geffnet wird?
(a) Das Dokument wird vollstndig formatiert angezeigt.(b) Das Dokument wird unformatiert angezeigt, der Browser
bercksichtigt jedoch die vorhandenen Strukturen und rcktentsprechend ein.
(c) Das Dokument erscheint als ASCII-Flietext.(d) Die Frage kann nicht generell beantwortet werden, das
Ergebnis hngt vom verwendeten Browser ab.
Eingaben lschen Aufgaben lsen
5 Was alles in den Shaker darf
Alexander (Digestif)1 Teil : Cognac1 Teil : Crme de Cacao braun1 Teil : Sahne
DekorationZimt
MixanleitungAlle Zutaten mit Ausnahme des Zimts werden im Shaker inklusive einigenEiswrfeln geschttelt und in ein Cocktailglas abgeseiht. Je nach Geschmackden fertigen Drink mit etwas Zimt bestreuen.
Im nun folgenden Teil der Broschre beleuchten wir nach der Wohlge-formtheit nun die Gltigkeit der XML-Daten. Wir werden ein Regel-werk definieren, welches die einzelnen Elemente unserer Cocktailbar be-schreibt: Was gehrt zu einem Cocktail? Sind die Zutaten in ausreichen-der Anzahl und vollstndig aufgefhrt? Sind Bilder erwnscht? Wird dieRezeptstruktur (Beschreibung, Zutaten, Mixanleitung) eingehalten?
Abbildung 5.1: Messbecher mit gltigen Cocktailrezepten
Entsprechen unsere Cocktailrezepte solchen Regeln, so sind sie gltig(valid) und knnen den verschiedensten Anwendungen zur Verarbeitunggereicht werden, beispielsweise dem Mixer an der Bar, dem Verlag zurErstellung eines Rezeptbuches, oder mal was ganz Besonderes einemMixautomaten.1
1 Der flchendeckende Einsatz solcher Automaten, die es brigens wirklich gibt, istbislang nur deshalb ausgeblieben, weil sich Maschinen morgens um halb 4 nicht aufDiskussionen mit betrunkenen und verzweifelten Ehemnnern einlassen wollen.
32 5 Was alles in den Shaker darf
5.1 DTD
Das XML-Regelwerk wird in einer DTD Document Type Definitionfestgelegt. Diese Gltigkeitregeln beschreiben
Elemente, Attribute, Entitten Welche Marken gibt es? Inhalte und Hufigkeitsangaben Was darf drin sein und wie oft? Beziehungen einzelner Elemente zueinander. Reihenfolge, Abhn-
gigkeiten, Verschachtelungen, Struktur Erst wird gemixt, danndekoriert.
Die DTD-Anweisungen knnen wahlweise innerhalb des XML-Doku-ments, oder auerhalb, in einer expliziten DTD-Datei, deklariert werden.In den folgenden, stark komprimierten Beispiel-Quellcodes wird zur bes-seren Lesbarkeit auf die interne Deklaration die Quick and Dirty Vari-ante zurckgegriffen. Im Produktionseinsatz ist die externe Deklarationwegen ihrer klaren Trennung von Daten und Regelwerk vorzuziehen.
5.1.1 Interne Deklaration
Gehen wir zunchst von einer sehr einfachen Bar aus, die einen Cocktailmit einem Namen und einer Zutat enthlt.
Abbildung 5.2: Grundstruktur unserer Bar
Die entsprechende bar.xmlwird dieser Struktur wie in Beispiel 5.1 aufder nchsten Seite gerecht.
Die aufmerksamen Leser haben schon die beiden Erweiterungen ent-deckt, die ber die reine Wohlgeformtheit hinausgehen.
Zum einen wird der XML-Tag um standalone=yes ergnzt, wo-mit signalisiert wird, dass alle notwendigen Informationen eben auchdie Gltigkeitsregeln in dieser XML-Datei vollstndig vorhanden sind.
Daneben werden die DTD-Anweisungen direkt im DOCTYPE-Tag ein-gebettet daher die Bezeichnung Interne Deklaration. Die allgemeineSyntax lautet:
5.1 DTD 33
]>
Alexander
3cl Creme de Cacao braun
Beispiel 5.1: Ohne Regeln bleibt auf Dauer keine Bar unbeschdigt.
Was den Aufbau des DTD-Statements ELEMENT (siehe Beispiel) an-geht, so werden Sie schon jetzt erkennen, dass die bar einen cocktailim Angebot hat, der wiederum einen namen hat und aus einer zutatbesteht. Im Kapitel 5.2 auf Seite 36 wird dessen Bedeutung und Aufbauvertieft.
5.1.2 Externe Deklaration
Die gleiche Bar kann aber auch allgemeingltiger realisiert werden.2Durch die Trennung von Datenbestand (XML) und Regelwerk (DTD)in jeweils eigenen Dateien gelingt es, mehrere unterschiedliche Daten-bestnde ein und demselben Regelwerk zu unterwerfen.
Eine Verknpfung von XML und DTD wird wieder im DOCTYPE-Tagdes XML-Dokuments durchgefhrt, diesmal jedoch lediglich mit demVerweis auf eine DTD-Datei die sogenannte Externe Deklaration. Derxml-Tag-Parameter standalone entfllt deshalb.
Fr die im Beispiel aufgebaute Mini-Bar bentigen wir daher einebar.xml:
2 Stellen Sie sich vor, Sie wollten unterschiedliche Datenbestnde wie Cocktails, Sekt-cocktails, Longdrinks und Shortdrinks verwalten, die sicherlich alle Namen, Zutatenund Mixanleitungen haben - sich von der Datenstruktur her also hneln.
34 5 Was alles in den Shaker darf
Alexander
3cl Creme de Cacao braun
sowie die DTD-Anweisungen in bar.dtd:
Andere XML-Datenbestnde knnen nun mit dem gleichen DOCTYPE-Verweis auf diese bar.dtd Bezug nehmen.
5.1.3 ffentliche DeklarationWird die zu verknpfende Regeldatei von einem greren Anwender-kreis benutzt (dessen Umfang so ungefhr ab weltweit aufwrts vermutetwird), bzw. planen Sie eine derartige Regeldatei zu erstellen, so empfiehltsich die Einbindung als ffentliche Deklaration.Im Vergleich zur lokalen Verknpfung wird diesmal das SchlsselwortSYSTEM durch PUBLIC ersetzt. Hinter PUBLIC folgt wieder ein URI,der sich nun jedoch aus einer Eigentmer-, Dokumentenklassen- undSprachcodebeschreibung zusammensetzt (jeweils durch // voneinan-der getrennt), bevor als Verknpfungsadresse der bereits bekannte URLfolgt.
Eine der bekanntesten ffentlichen Deklarationen bezieht sich auf dieDTD mit der Regelbeschreibung von XHTML.
5.1 DTD 35
Der Zeilenumbruch des letzten Beispiels hat freundlicherweise automa-tisch dafr gesorgt, dass wir die ffentliche Deklaration schrittweise ana-lysieren knnen.
Zeile 1 : birgt soweit nichts Neues. Das Schlsselwort PUBLIC zeigt ledig-lich an, dass es sich um eine ffentliche Verknpfung handelt.
Zeile 2 : -//W3C beschreibt den Eigentmer oder Ersteller der DTD, alsdas W3Consortium. //DTD XHTML... zeigt an, dass es sich umein Regelwerk fr XHTML handelt in der Version 1.0. Das Gan-ze ist dazu in Englisch (//EN) verfasst worden.Um nochmal kurz auf die Eigentmerschaft zurckzukommen:Das fhrende - (in -//W3C) weist darauf hin, dass das W3Con-sortium ein nicht registrierter Eigentmer der DTD ist. In Analo-gie dazu existieren, erkennbar am fhrenden +, zumindest in derTheorie auch registrierte Besitzer bis zur Stunde der Druckle-gung konnte dem Autorenteam jedoch niemand verraten, wo sichInteressenten registrieren lassen knnen.
Zeile 3 : gibt abschlieend nur noch die Adresse an, von der die gewnschteDTD geladen werden soll.
Tipp: Sofern Sie daran interessiert sind mal einen Blick hinter dieKulissen zu werfen, sollten Sie aber bitte erst nachdem Sie denRest dieser Broschre gelesen haben die oben aufgefhrte DTDxhtml1-transitional auf dem eigenen Rechner speichern.Auch wenn sich die DTD auf XHTML bezieht, so ist sie aufgrundder hohen Kompatibilitt ein gutes Beispiel um zu zeigen, wie bei-spielsweise HTML definiert ist.
Na, konnten Sie Ihre Neugier nicht zgeln und haben bereits in derxhtml1-transitional.dtd rumgeschnuppert? Lassen Sie michabschlieend feststellen, dass auch die Syntax fr DTDs erstmal chao-tischer ausschaut, als sie letztendlich wirklich ist.
36 5 Was alles in den Shaker darf
5.2 Elemente
Julia (Cocktail)2 cl : Amaretto2 cl : Rum wei6 cl : Sahne
DekorationErdbeeren
MixanleitungZutaten im Elektromixer mit einigen Eiswrfeln gut durchmixen und das fer-tige Mix in einen groen Sektkelch fllen. Erdbeere an den Glasrand stecken.
Wie sehen nun solche DTD-Regeln aus?
Beginnen wir mit der berlegung, welche gltigen Elemente ein XML-Datensatz haben darf, in welcher Anzahl Elemente auftauchen drfen,welche Beziehungen oder Abhngigkeiten mehrerer Elemente zueinan-der haben, ob eine Reihenfolge eingehalten werden muss und schlie-lich, was fr eine Struktur das ganze Datengebilde aufweisen soll.
Im vorhergehenden Kapitel wurde eine Beispiel-Bar konstruiert, dieeinen Cocktail mit einem Namen und einer Zutat enthlt (siehe Ab-bildung 5.2). Name und Zutat sollen lediglich Text enthalten. All daswird in einer entsprechenden Document Type Definition (DTD) mit demELEMENT-Tag festgelegt:
Mit dem Elementnamen werden gltige XML-Elemente definiert. Diechronologische Reihenfolge der Elemente im XML-Dokument muss derListe der ELEMENT-Tags entsprechen.
Als Elementinhalt drfen die folgenden Werte verwendet werden:
EMPTY leeres ElementANY beliebigElementmodell Bei Kindelementen: Name, Abfolge und Hufigkeit
Im Beispiel: (name,zutat)(#PCDATA) Parsed Character Data - Inhalt besteht aus Text
Zu unserer Beispiel-Bar bentigt man demnach die folgenden ELEMENT-Anweisungen:
5.2 Elemente 37
5.2.1 Traumberuf Barmixer? (Teil I: Das Ziel)Nun ist eine Bar mit nur einem Cocktail (der dazu auch noch aus nureiner einzigen Zutat besteht) zugegebenermaen nicht marktfhig. Einereichhaltige Getrnkekarte mit anstndigen Drinks sei daher genug Moti-vation dieses Elementmodell zu dem auszubauen, was in Abbildung 5.3zu sehen ist: Mehr Cocktails, mehr Zutaten, Hinweise zur Dekoration,eine Mixanleitung und eventuell ein Foto.
Abbildung 5.3: Elementmodell Ziel ist eine vollstndige Bar.
Teile dieses Barmodells werden im weiteren Verlauf dieser Broschreimmer wieder als Beispiel herangezogen werden.
5.2.2 Hufigkeitsangaben
Abbildung 5.4: Mehrfachnennung von Elementen
Hufigkeitsangaben legen fest, wie oft ein Element, eine Elementfolgeoder eine Elementauswahl auftreten soll bzw. darf. Dabei existieren viermgliche DTD-Notationen:
38 5 Was alles in den Shaker darf
Element genau 1 malElement? 0 oder 1 mal (optional, hchstens einmal)Element* 0 bis n mal (optional, beliebig oft wiederholbar)Element+ 1 bis n mal (erforderlich, mindestens einmal, beliebig
oft wiederholbar)Als angehende Barbesitzer wollen wir natrlich viele verschiedene Cock-tails anbieten. Jeder Cocktail soll einen Namen haben und aus mindes-tens einer Zutat bestehen.3 Dekoration und Mixanleitung sind unver-zichtbar, ein Foto hingegen kann erbrigt werden.
Damit ergibt sich das folgende DTD-Konstrukt:
...
...
Achten Sie darauf, dass Sie keine Leerrume (Tabulatoren, Leerzeichen,! etc.) zwischen den Elementnamen und den Hufigkeitsangaben einset-zen.
5.2.3 Elementfolge
Abbildung 5.5: Die verbindliche Reihenfolge von Elementen
Die Elementfolge legt die verbindliche Reihenfolge von Elementen, Ele-mentfolgen oder Elementauswahlen fest:
(Element1,Element2,...) erster, zweiter,...
3 Den Autoren sind brigens keine Cocktails bekannt, die nur aus einer Zutat bestehen.Cocktails, die nur aus Rum bestehen, bleiben Rum. Selbst der Dagobert-Duck-Spar-Cocktail (Rezept auf Seite 26) besteht aus Leitungswasser und einem Spritzer Soda.
5.2 Elemente 39
Lernen Sie die Anleitungen fr die Cocktails Julia und Alexander aus-Kleine bungwendig. Cocktailname, Mengen und Substanzen der Zutaten. Der immergleiche Schema-Aufbau aller Cocktails wird Ihnen die Paukerei erleich-tern. Vorhandene Abhngigkeiten Mengenangaben werden zum Bei-spiel nur im Zusammenhang mit den Zutaten, und nicht im Namen ge-nannt drngen sich dabei wie von selbst auf.
Reihenfolgen und Abhngigkeiten fhren zu diesem DTD-Konstrukt:
...
...
Demnach besteht jede Zutat aus genau einer Substanz und einer Men-genangabe. Eine Umkehrung zuerst die Menge und dann die Substanz ist nicht zulssig.
5.2.4 Elementauswahl
Die Elementauswahl beschreibt eine Entweder/Oder-Verknpfung vonElementen, Elementfolgen oder Elementauswahlen:
(Element1|Element2|...) Element1 oder Element2 oder ...
Abweichend vom bisherigen Bar-Modell, beschftigen wir uns in Formeines kleinen Einschubs mit Personalangelegenheiten. Unsere Bar stehtja noch ganz am Anfang. Daher knnen wir nur einen Angestellten be-schftigen. Die DTD hierfr sieht wie folgt aus:
...
...
Sollte unsere Bar so richtig in der Szene einschlagen, so werden selbst-! verstndlich weitere Mitarbeiter eingestellt. Die Kombination von Hu-figkeitsangaben und Elementauswahl hat jedoch so ihre Tcken. Beach-ten Sie den folgenden Effekt:
40 5 Was alles in den Shaker darf
...
...
beschreibt eine gemischte Angestelltengruppe, eine beliebige Reihenfol-ge von sowohl BarFachfrauen als auch MixMeistern, wohingegen
...
...
entweder nur BarFachfrauen oder nur MixMeister jeweils in beliebi-ger Anzahl verpflichtet.4
5.2.5 Traumberuf Barmixer? (Teil II: Das Ergebnis)
Pangalaktischer Donnergurgler (Cocktail)1 Flasche: Alten Janx-Geist1 Teil : Wasser aus den Meeren von Santraginus V3 Wrfel : arkturanischer Mega-Gin4 l : fallianisches Sumpfgas1 Teil : qualaktinischer Hyperminz-Extrakt1 Zahn: eines algolianischen Sonnentigers1 Spritzer: Zamphour
DekorationOlive
MixanleitungZutaten mischen, Mega-Gin-Wrfel darin zergehen lassen, Das Sumpfgas hin-durchperlen lassen, ber einen Silberlffel den Minze-Extrakt trpfeln undden Zahn auflsen.
[Kein Bild verfg-bar - Der Film istwhrend der Zube-reitung im Kamera-gehuse verdampft!]
Unsere Bar ist nun vollstndig. Die DTD-Anweisungen sind die Sum-me der bisherigen berlegungen. Auf das Foto (eine Grafik daher ANYund nicht (#PCDATA)) kann gegebenenfalls verzichtet werden, weilunsere Angestellten sowieso jeden Drink schon x-mal zubereitet haben
4 Als Bar-Besitzer werden Sie natrlich die 2. Variante whlen, weil sie so eine derbeiden, nach Geschlechtern getrennten, Angestelltentoiletten einsparen.
5.3 Attribute 41
und wissen wie er aussieht. Die bar.dtd:
(name,zutat+,dekoration,mixanleitung,foto?)>
Die Cocktails werden nun (Beispiel 5.2 auf der nchsten Seite) inbar.xml abgelegt.
5.3 Attribute
Tequila Sunrise (Longdrink)4 cl : Tequila Silver2 cl : Grenadineetwas: Orangensaft
DekorationSchwarzer Trinkhalm
MixanleitungEinige groe Eiswrfel in ein Longdrinkglas geben, den Tequila dazu undmit Orangensaft auffllen. Zum Schluss Grenadine dazugeben und mit einemschwarzen Trinkhalm gerade so wenig umrhren, dass man den Sonnenauf-gang im Glas noch sieht.
Mit Hilfe von Attributen knnen den Elementen zustzliche Informatio-nen beigefgt werden. In unserer Bar kann beispielsweise jedem Cock-tail die Klassifizierung mitgegeben werden, ob es sich eher um einenCocktail, einen Longdrink oder einen Collins handelt.
Attribute werden im Gegensatz zu Elementen, deren Inhalt als eigent-liche Informationseinheit verstanden wird, in erster Linie als Steuerin-formation benutzt. Ein Verlag knnte das Attribut Klassifizierung dazunutzen, die verschiedenen Cocktails zu gruppieren und sie in Kapitelnzusammenzufassen.
In der DTD findet eine Auflistung mglicher Attribute im Anschluss andie Element-Definition statt:
42 5 Was alles in den Shaker darf
Alexander
Cognac3cl
Creme de Cacao braun3cl
Sahne3cl
Zimt
Alle Zutaten - mit Ausnahme des Zimts - werden im Shaker
inklusive einigen Eiswrfeln geschttelt und in einCocktailglas abgeseiht. Je nach Geschmack den fertigenDrink mit etwas Zimt bestreuen.
alexander.jpg
Julia
Amaretto2cl
Rum wei2cl
Sahne6cl
Erdbeeren
Zutaten im Elektromixer mit einigen Eiswrfeln
gut durchmixen und das fertige Mix in einen groenSektkelch fllen. Erdbeere an den Glasrand stecken.
julia.jpg
Beispiel 5.2: Die komplett ausgestattete Bar.
5.3 Attribute 43
Abbildung 5.6: Attribute hier als Sortierkriterium.
Attributname2 Typ Default...>
Bevor die einzelnen Bestandteile des ATTLIST vorgestellt werden, zu-nchst unsere Beispiel-Bar, in der wir nach Abbildung 5.6 das Attributklassifizierung als Zusatz zum Namen definieren:
(name,zutat+,dekoration,mixanleitung,foto?)>
Cocktail>
Der Elementname beschreibt, auf welche Elemente sich die folgendenAttribute beziehen. Es drfen nur vorangegangene, gltige Elemente ver-wendet werden in diesem Fall name.
Der Attributname ist frei whlbar - im Beispiel klassifizierung.
Als Attributtyp knnen die folgenden Notationen verwendet werden:
44 5 Was alles in den Shaker darf
Typ Erluterung, Beispiel DTD und Beispiel XML-Satz
CDATA Zeichenkette aus beliebigen Zeichen (Character Data).
Tequila Sunrise
ID Es ist pro Element nur ein Attribut dieses Typs erlaubt. Namensregeln wiefr XML-Namen. Der Wert muss eindeutig, das erste Zeichen darf nichtnummerisch sein! Voreinstellungen #IMPLIED oder #REQUIRED.
...
ENTITY /ENTITIES
Bezug auf den Namen einer generellen, externen, nicht parsbaren Entitt Zum Beispiel ein Bild.
...
NMTOKEN /NMTOKENS
Zeichenkette, die nur aus Buchstaben, Ziffern, Punkt (.), Bindestrich (-),Unterstrich (_) und dem Doppelpunkt (:) bestehen darf (Name Token).
Oliven
5.3 Attribute 45
Typ Erluterung, Beispiel DTD und Beispiel XML-Satz
(Wert1|Wert2|...) Aufzhlung mglicher Attributwerte. Der Attributwert in einem XML-Satzmuss einem der Werte aus dieser Liste entsprechen.
Tequila Sunrise
Fr die Voreinstellung (Default) drfen die folgenden Werte verwendet werden:
Voreinstellung Erluterung
#REQUIRED In dem XML-Satz muss das Attribut immer angegeben werden.
#IMPLIED Die Angabe des Attributs ist optional.
wert Standardwert, falls das Attribut nicht angegeben wurde.
#FIXED wert Der einzig mgliche Wert fr das Attribut.
46 5 Was alles in den Shaker darf
5.4 Entitten
Cuba Libre (Longdrink)4 cl : Bacardi Rum wei1 l : Tropicola
DekorationZitronenscheibe
MixanleitungEiswrfel bis zum Rand in das Glas geben und mit Rum und Cola auffllen.
Als Barbesitzer rgern Sie sich natrlich ber die EU-Verordnung zurKennzeichnungspflicht in Lebensmitteln.5 Sie tippen sich die Fingerwund, weil bei jedem Ihrer Drinks eine Reihe von ellenlangen, fortwh-rend gleichen Zusatzstoff-Listen angehngt werden muss.
Den XML-Entwicklern ist dieser Umstand nicht verborgen geblieben,und so schufen sie Entitten.
Entitten sind Verweise auf Daten. Die Funktionsweise erinnert an Text-bausteine Entittsnamen werden in einem XML-Satz oder innerhalbeiner DTD durch den Inhalt der Entitt ersetzt.
Abbildung 5.7: Entitten Textbausteine fr XML und DTD
Generell unterscheidet man dabei zwei Arten: Parameter Entitten, dienur innerhalb der DTD gltig sind, und Generelle Entitten, gltig inner-halb der XML-Elemente.
5 Bei verpackten Lebensmitteln werden Zusatzstoffe im Rahmen der Zutatenliste ge-kennzeichnet. Bei loser Ware muss ein Schild an oder neben dem Produkt aufdie Verwendung von Zusatzstoffen hinweisen. In Gaststtten und Einrichtungender Gemeinschaftsverpflegung mssen Zusatzstoffe in der Speisekarte, der Preis-liste oder auf einem Aushang gekennzeichnet werden. Das kann auch in Formvon Funoten geschehen. Siehe auch http://www.verbraucher.org/ bzw.http://www.zusatzstoffe-online.de/
5.5 Parameter-Entitten 47
5.5 Parameter-Entitten
Parameter-Entitten werden in der DTD definiert und gelten auch nurinnerhalb der DTD.
In unserer bar.dtd knnen wir nun immer wieder auftretende Ge-schmacksrichtungen als Textbaustein verwenden:
dies wird automatisch ersetzt zu:
Beachten Sie die etwas gewhnungsbedrftige Notation mit dem Pro-! zentzeichen (%) und dem Semikolion (;).
5.6 Generelle Entitten
Generelle Entitten sind fr den Einsatz innerhalb der XML-Elementegedacht, womit wir uns dem Problem mit der Kennzeichnungspflicht vonZusatzstoffen nhern.
In unserer bar.dtd knnen wir wieder hufig wiederkehrende Textteiledeklarieren:
die Anwendung findet innerhalb der XML-Datenstze statt
3cl Creme de Cacao braun mit &enummern;
48 5 Was alles in den Shaker darf
und dies wird ersetzt zu:
3cl Creme de Cacao braun mit E412, E189, E503, E612, E613und E614
Beachten Sie, dass im Gegensatz zu den Parameter-Entitten hier in der! DTD kein Prozentzeichen (%) stehen darf. Im XML-Datensatz wird mitdem kaufmnnischen Und (&) und dem Semikolion (;) gearbeitet, so wiees von den Umlauten in HTML ( = ) her bekannt ist.Anstelle von Zeichenketten knnen auch Verweise auf externe oder f-fentliche Daten verwendet werden. Mit parsbaren bzw. nicht-parsbaren Kapitel 5.7 auf der
nchsten Seite Entitten sind hier Text- bzw. Binrdaten (zum Beispiel ein Foto) ge-meint:
Entityinhalt Erluterung
Zeichenkette Interne Entitt, E412, E189, E503, E612,E613 und E614
SYSTEM URI Externe, parsbare Entitt. Der URI ver-weist auf ein Dokument.
PUBLIC FPI URIffentlicher Verweis auf eine externe,parsbare Datei und einen alternativenURI.
SYSTEM URI NDATA Notation Externe, nicht-parsbare Entitt.
PUBLIC FPI URI NDATANotation
ffentlicher Verweis auf eine externe,nicht-parsbare Datei.
5.7 Notationen 49
5.7 Notationen
Tom Collins (Collins)5 cl : Gin3 cl : Zitronensaft2 cl : Zuckersirupetwas: Sodawasser
DekorationZitronenscheibe, Cocktailkirsche
MixanleitungDie Zutaten (ohne Sodawasser) mit Eiswrfeln im Shaker gut schtteln undin ein Longdrinkglas auf einige Eiswrfel abseihen. Mit etwas Sodawasserauffllen. Mit einer Zitronenscheibe und einer Cocktailkirsche garnieren.
Mit Notationen werden externen, nicht-parsbaren Entitten Hilfsanwen-dungen zugeordnet.
In unserer bar.dtd definieren wir, dass das Programm graphic-studio.exe zu starten ist, sobald einem Cocktail ein Icon als Attributbergeben wird:
In bar.xml erhlt der Cocktail Tom Collins nun einen Smiley:
Tom Collins
Was passiert jedoch, wenn zur XML-Anwendung gar kein graphic-studio.exe installiert ist?6
6 Zumindest hatten bis zum Zeitpunkt des Erscheinens dieser Broschre weder Mix-Meister noch BarFachfrauen eine Windows-Version implantiert bekommen. BeideAngestelltengruppen knnen zwar lcheln, werden aber partout nicht gelb, womit derSmiley nicht darstellbar ist.
50 5 Was alles in den Shaker darf
Die feste Zuordnung zwischen Hilfsanwendungen und Datenelementenbereitet den Autoren Zahnweh, zumal der offene Austausch von Datensehr eingeschrnkt wird. Ein solches Regelwerk lsst sich bestenfallsinnerhalb eines homogenen Umfeldes zum Beispiel innerhalb einesFirmen-Intranets mit fest vorgegebenen Rechner und Programmstruktu-ren durchsetzen.
5.8 Aufgaben zur Selbstkontrolle 51
5.8 Aufgaben zur Selbstkontrolle
Versuchen Sie, mglichst ohne Zuhilfenahme der Unterlagen, die folgen-den Fragen zu beantworten, bzw. die Stze zu vervollstndigen:
1. Ein XML-Regelwerk
(a) kann im Prolog einer XML-Datei stehen.(b) kann beliebige Marken deklarieren.(c) wird in einer DTD festgelegt.(d) wird vom W3C festgelegt.
2.
(a) schafft jede Menge Arbeitspltze.(b) verlangt nur BarFachfrauen oder MixMeister.(c) verlangt paarweise BarFachfrauen und MixMeister.(d) verlangt beliebig viele BarFachfrauen oder MixMeister.(e) verlangt eine Nennung in der Reihenfolge BarFachfrau
und dann MixMeister.
(f) taucht nirgendwo auf den Web-Seiten des W3C auf.3. Wie sieht die DTD-Anweisung fr Attribute aus, mit der jedem
Cocktail eine eindeutige Cocktailnummer zugeordnet wird?
(a) (b) (c) (d) (e) (f)
4. Entitten
(a) eignen sich als Textbausteine.(b) knnen auch auf nicht parsbare Daten (Bilder) verweisen.(c) werden in einer DTD festgelegt.(d) werden vom W3C untersagt.
Eingaben lschen Aufgaben lsen
52 5 Was alles in den Shaker darf
6 Unbekannte Rezepturen
6.1 Namensrume oder: Der Ehren-Codex der Barmixer
Gin Fizz (Cocktail)2/3 : Gin1/3 : Zitronensaft1 EL : Zuckersirupetwas: Sodawasser
DekorationZitronenscheibe, Cocktailkirsche
MixanleitungDie ersten drei Zutaten im Shaker inklusive Crushed Ice schtteln, dann inden Tumbler abseihen. Mit Soda den Longdrink auffllen und mit Kirscheund Zitronenscheibe dekorieren.
Mittlerweile ist unsere bar.xml wohlgeformt und mit Hilfe derbar.dtd auch gltig. Alle XML-Elemente und Attribute sind damitnamentlich eindeutig definiert man spricht in diesem Fall vom Na-mensraum, den eine DTD bildet. Im Beispiel gehren alle Cocktails demNamensraum unserer Bar an, der bar.dtd.
Was geschieht nun, wenn keine DTD vorhanden ist? Was, wenn XML-Elemente aus fremden Namensrumen, oder mehrere Namensrumegleichzeitig benutzt werden sollen? Besonders problematisch wird es,wenn sich dabei Elementnamen und Attribute berschneiden und ins Ge-hege kommen. Bei mehreren gleichnamigen Elementen, sind Konflikteinnerhalb der XML-Anwendung vorprogrammiert.
Ein Beispiel: Zum Feierabend bestellt sich der letzte Gast bei unseremBeispiel 6.1 auf dernchsten Seite MixMeister einen Gin Fizz.
So richtig wach ist der Mann hinter dem Tresen nicht mehr. Wie warder Cocktailname noch gleich? Gin Fizz oder Sodawasser? Und muss-te - nicht ein Attribut klassifizierung haben?Welche Regelwerke sich hinter einem - oder ei-nem - verbergen, geht aus dieser XML-Datei nichthervor. Um es vorweg zu nehmen: Der Mixmeister serviert dem Gastwahrscheinlich ein Glas Milch, weil ihm die passende DTD fehlt.
54 6 Unbekannte Rezepturen
Gin Fizz
2/3 Gin
1/3 Zitronensaft
1 EL Zuckersirup
etwas Sodawasser
Beispiel 6.1: Gin Fizz gegen Feierabend
6.1.1 Qualifizierte Namen
Als Antwort auf fehlende DTD-Angaben hat das W3C im XML-Standardqualifizierte Namen (qualified names) eingefhrt. Mit Ihnen werden inder XML-Datei die bisher bekannten Elemente um einen Namensraumerweitert.
Das Attribut xmlns: steht dabei fr XML name space. Der URI be-stimmt, auf welchen Namensraum sich das Element und alle darin ent-haltenen Unter-Elemente beziehen. Eine hier genannte Adresse siemuss nicht wirklich existieren dient nur als Namenskonvention undist quasi ein Ehren-Codex zwischen den Erzeugern der Daten und denProgrammierern einer XML-Anwendung, die an beide appelliert: Halteteuch an die gleichen Regeln. Der URI steht fr den Namen des Regel-werkes.
Fr unser Beispiel formuliert der Gast seine Bestellung neu:
Mach mir einen Gin Fizz nach den Anleitungen vonhttp://www.bar.de/cocktail und verwendeZutaten aus dem Fundus vonhttp://www.zutaten.de.
6.1 Namensrume oder: Der Ehren-Codex der Barmixer 55
Die entsprechende bar.xml sieht dann so aus:
Gin Fizz
2/3 Gin
1/3 Zitronensaft
...
Der Cocktail gelingt, die Milch wandert in den Ausguss.
An dieser Stelle sei nochmals auf die mgliche Nichtexistenz eines URI! hingewiesen. Es handelt sich nicht um eine Auflistung von externenDTD-Adressen, weshalb das Namensraumkonzept bei der Validierungauch komplett ignoriert wird.
6.1.2 Mehrere Namensrume gleichzeitig verwenden
Waren im vorhergehenden Beispiel die Namensrume noch hierarchischvoneinander getrennt1, so lassen sich mit leicht modifizierten Notationauch mehrere xmlns auf der gleichen Ebene miteinander vermischen:
Entsprechend kann auch unsere bar.xml gestaltet werden:
Gin Fizz 2/3 Gin
...
1 Der name-Tag innerhalb einer zutat unterscheidet sich i.A. von dem in der Daten-struktur darberliegenden Cocktail-name.
56 6 Unbekannte Rezepturen
Auer Cocktail-Regelwerken kann man natrlich auch richtige Standardseinsetzen. Falls Sie HTML4.0-Tags in Ihrem XML-Dokument verwen-den wollen, so gilt der offizielle Namespace des W3C:
Und auch hier noch einmal: Unter diesem URI finden Sie zwar kei-! ne DTD, Sie vereinbaren und akzeptieren jedoch stillschweigend, dasses sich bei den unterhalb vom -Tag befindlichen Elementen umdie bekannten , , usw. handelt. Nach diesem Regelwerkschreiben Sie HTML-Seiten und nach diesem Regelwerk verhlt sichauch jeder Web-Browser.Wenn Sie neue HTML-Tags erfinden, so wird diese kein Browser an-zeigen (knnen) sondern ignorieren, weil sie nicht im W3C-Regelwerkdefiniert sind.
6.1.3 Namensrume: Unser Fazit
Sicher haben Sie es bemerkt: Namensrume sind fr den persnlichenEinsatz zu unprzise und eignen sich eher zur Realisierung von berre-gionalen Standards. Die Autoren haben brigens ein C22 gegrndet undgeben demnchst die Cocktail Meta Language (kurz CockML) heraus.Fr berschaubarere Einsatzbereiche, wie beispielsweise Firmen-Intra-und Extranets, eignen sich DTD-Anweisungen besser.
2 C2: Cocktail Consortium
7 Auf Ex Anwendungsbeispiele
Mike Collins (Collins)6 cl : Irish Whiskey3 cl : Zitronensaft2 cl : Zuckersirupetwas: Sodawasser
DekorationZitronenscheibe, Cocktailkirsche
MixanleitungDie Zutaten ohne Sodawasser im Shaker gut schtteln und in ein Long-drinkglas auf einige Eiswrfel abseihen. Mit etwas Sodawasser auffllen. Miteiner Zitronenscheibe und einer Cocktailkirsche garnieren.
Another party is over. . . sang vor mehr als zwanzig Jahren FreddyMercury in seinem Melancholy Blues, und er hatte wie so hufig Recht.Auch unsere Cocktailparty neigt sich langsam seinem Ende entgegen undwenn es noch eine offene Frage gibt,1 dann sicherlich die, wofr derganze bislang betriebene Aufwand denn gut gewesen sein soll.
Bislang haben wir eine praktische Umsetzung von XML-Daten kennen-gelernt, nmlich die auf Seite 26, wo wir mit Hilfe von Cascading StyleSheets XML-Daten fr die Darstellung innerhalb eines WWW-Browsersaufbereitet haben. Im folgenden Abschnitt machen wir etwas sehr hnli-ches: Wiederum ist unser Zielmedium ein WWW-Browser, doch diesmalwird die Konvertierung durch ein PHP-Skript bereits auf dem Server vor-genommen (weshalb solche Lsungen auch Serverside genannt werden),und der Browser erhlt bereits den fertigen HTML-Code.
Wofr das Ganze gut sein soll? Zum einen kann so die Darstellung unse-res Dokuments sehr viel dynamischer werden. Denken wir an den Dagobert-Duck-Sparcocktail zurck, so stellen wir fest, dass die Mengenangabeimmer hinter der Substanz erscheint einfach aus dem Grund, weil die-se Reihenfolge im XML-Dokument festgelegt ist, und wir durch Casca-ding Style Sheets keinen Einfluss darauf haben. Durch den Einsatz vonServerside-Konstrukten bieten sich da ganz andere Mglichkeiten, wiewir gleich noch feststellen werden.
Nicht vergessen sollten wir auch, dass es immer noch Anwender gibt,die sich nicht von ihrem Netscape 4.0 trennen wollen, fr den wiederumCSS gnzlich unbekannt sind.
1 Wahrscheinlich gibt es jede Menge, aber wir werden nur noch die eine beantworten.
58 7 Auf Ex Anwendungsbeispiele
7.1 Serverside xml2html mit PHP
Selbstverstndlich gibt es auch Serverside xml2html-Lsungen fr diebeliebte Scriptingsprache PHP. Wie so oft wird man unter
http://www.hotscripts.com/
fndig. Dort stt man unter anderem auf Michael P. Mehls XML-Klassephpxml-1.0. Siehe auch
http://www.phpxml.org/
Eine einfache Cocktail-Anwendung inklusive Anzeige und Suchfunkti-on ist mit wenigen Zeilen PHP-Code realisiert. Der einleitende HTML-Code, das Suchformular sowie der detaillierte Tabellenaufbau entfal-len hier aus Platzgrnden; das vollstndige Listing findet sich in An-hang B.2.
...
evaluate(//cocktail/*[contains(., $suchabfrage)]/..);
}else{ // Alle anzeigen$getraenke = $xmlevaluate(//cocktail);
}foreach ( $getraenke as $cocktail ){ // durch alle XML-Datensaetze$name = $xmlget_content($cocktail./name[1]);
?>
...
Das PHP-Skript erzeugt damit serverseitig HTML-Code, der von jedemAbbildung 7.1 auf dernchsten Seite Browser angezeigt werden kann.
7.2 xml2tex mit Java
Als Alternativbeispiel, und nicht zuletzt um zu zeigen, dass XML-An-wendungen nicht doch immer wieder als konvertierte HTML-Ausgabe
7.2 xml2tex mit Java 59
Abbildung 7.1: Cocktailrezepte mit phpxml-1.0
in einem Browserfenster landen, wollen wir nun zumindest prinzipielldemonstrieren, wie wir unsere Cocktailliste in ein schickes Rezeptbuchverwandeln knnen.
Wo liegt dabei berhaupt das Problem? Bekanntlich verfgt jeder WWW-Browser ber eine eingebaute Print-Routine. Sofern Sie jedoch wie wirder Meinung sind, dass Schriftsatz etwas mehr als eine Aneinanderrei-hung von Buchstaben ist, sollten Sie weiterlesen schlielich haben wirim oberen Absatz bereits das Attribut schick benutzt.
Angedacht ist also eine Konvertierung unserer XML-Cocktails zu einerdruckfhigen Rezeptsammlung. Um eine optimale Druckaufbereitung zuerzielen, und um uns nicht mit mehr Arbeit als ntig zu belasten, be-dienen wir uns des Schriftsatzsystems LATEX als Backend, und zwar ausfolgenden Grnden:
1. sind in LATEX immer noch die besten Satzalgorithmen enthalten.Unsere Rezeptsammlung soll ja auch nach was aussehen.
2. besitzt LATEX eine hnliche Auszeichnungsstruktur wie XML. Ei-ne Konvertierung kann sich daher (beinahe) auf den simplen Aus-tausch von Marken beschrnken.
7.2.1 Was wird bentigt?
Grundstzlich bentigen wir die Java-Pakete javax.xml.parsers,sowie org.xml.sax die fr uns den bentigten Parser bereitstellen.Beide Pakete sind seit der Version 1.4 in der kostenlosen Java 2 StandardEdition (j2SE) enthalten.
60 7 Auf Ex Anwendungsbeispiele
Um dieses Kapitel nicht ausufern zu lassen, haben wir darberhinaus denJava-Quellcode auf die ntigsten Anweisungen komprimiert. Sie soll-! ten daher zumindest rudimentre Java-Kenntnisse besitzen um das fol-gende Beispiel zu verstehen. Das komplette nicht weiter kommentierteProgramm-Listing finden Sie im Anhang B.3.
7.2.2 Wie sieht die Java-Klasse aus?
In einem ersten Schritt mssen die oben aufgefhrten Pakete in eine ei-gene Klasse, in unserem Beispiel BarListe.java, eingebunden wer-den. Barliste selbst ist wiederum eine Ableitung der StandardklasseDefaultHandler.
import javax.xml.parsers.*;import org.xml.sax.*;import org.xml.sax.helpers.*;import java.io.*;public class BarListe extends DefaultHandler{private String elementname;private String attrib_cocktail;
...
}
Innerhalb unserer Klasse knnen nun die geerbten Methoden start-Document, startElement, characters, endElement undendDocument berschrieben werden, die fr die Umsetzung des XML-Codes verantwortlich sind. Das Verfahren gestaltet sich dabei wie folgt:
Durch die Instanzierung unserer Klasse wird automatisch ein Parser ge-startet, der als Argument den Namen unseres XML-Dokuments ber-nimmt.
public class BarListe extends DefaultHandler{...
public static void main(...){SAXParserFactory saxpafac =SAXParserFactory.newInstance();
saxpafac.setValidating(true);SAXParser saxpa = saxpafac.newSAXParser();saxpa.parse(args[0], new BarListe());
...
}}
7.2 xml2tex mit Java 61
Die Methode parse bernimmt in diesem Beispiel den Namen desXML-Dokuments aus der Kommandozeile und instanziert unsere KlasseBarListe. ber die Methode setValidating wird festgelegt, obder Parser das Dokument zustzlich auf Gltigkeit prfen soll.
Die oben aufgefhrten Methoden werden nun vom Parser in Abhn-gigkeit des eingelesenen Dokuments aktiviert, beispielsweise start-Document beim Beginn der Leseoperation oder startElement so-bald eine ffnenden Marke (wie ) auftaucht.
public class BarListe extends DefaultHandler{public void startDocument() {System.out.println("\\documentclass{article}");...
}}
Entsprechend komplizierter wird die Angelegenheit, sobald die erstenffnenden Marken gefunden werden.
...
public void startElement(String nsu, String ln,String qn, Attributes attr) {elementname = qn;
if (elementname.equals("name")) {System.out.println("\\section{");attrib_cocktail = attr.getValue("klassifizierung");
}...
}
Der Methode startElement wird also jeweils im dritten Argumentder Name des gefundenen Element bergeben, der dann im Methoden-rumpf per if-Anweisung abgefragt werden kann. In unserem Beispielwird jeweils bei jedem Fund der Marke die LATEX-Anweisung\section{ geschrieben, also eine neue berschrift erzeugt. Danebenkann ber die Methode getValue der Wert des Attributs klassi-fizierung gesichert werden.
Der eigentliche Inhalt des Elements also Character Data, oder um beimBeispiel zu bleiben, der Name des Cocktails, wird durch die Methodecharacters lokalisiert.
62 7 Auf Ex Anwendungsbeispiele
...
public void characters(char[] cont, int start,int len) {data = new String(cont, start, len).trim();if (elementname.equals("name")) {System.out.println(data);
}...
}
Die Aufgabe die abschlieende } zu setzen, um den \section-Befehlzu vervollstndigen, bleibt der Methode endElement berlassen. hn-liches gilt fr die Methode endDocument welche am Ende des XML-Dokuments aufgerufen wird und die folgerichtig auch die letzte Zeile derLATEX-Datei (\end{document}) schreibt.Der auf diese Weise entstandene LATEX-Quellcode schaut nicht unbedingtstrukturiert aus, ist jedoch voll funktionsfhig wie Abbildung 7.2 zeigt.
Abbildung 7.2: Aus XML wird mit Hilfe von Java ein echtes Rezept-buch.
Anhang A Auflsung aller Aufgaben
Aufgaben 2.4 auf Seite 7: 1 (b); 2 (c); 3 (e)
Aufgaben 3.7 auf Seite 18: 1 (Falsch); 2 (Korrekt); 3 (Falsch); 4 (Korrekt); 5 (Falsch); 6 (Korrekt);7 (Falsch)
Aufgaben 4.5 auf Seite 30: 1 (a); 2 (c); 3 (a); 4 (d)
Aufgaben 5.8 auf Seite 51: 1 (a) oder (c); 2 (c); 3 (d); 4 (a), (b) oder (c)
64 Anhang A Auflsung aller Aufgaben
Anhang B Programm-Listings
B.1 xml2html mit XSL1
5 Cocktail Bar
Cocktail BarInhaber: Feuerstack & Vieler
10
15 Zutaten:
20
25 Dekoration:
30
35
66 Anhang B Programm-Listings
B.2 Serverside xml2html mit PHP
1
5
Die XML-Cocktailbar
10
B.2 Serverside xml2html mit PHP 67
color : #6E749F;55 font : bold 13pt Tahoma, Verdana, Geneva, Arial,
Helvetica, sans-serif;letter-spacing : 1px;
}
60 span.small{
background : transparent;color : #000000;font : 8pt Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
65 }
td{
background : transparent;70 font : 10pt Verdana, Geneva, Arial, Helvetica, sans-serif;
}
td.content{
75 padding : 20px 20px 20px 20px;background : #FFFFFF;color : #000000;vertical-align : top;
}80
-->
85
68 Anhang B Programm-Listings
Search:110 class.include("../../source/xml.php");
// Create an XML object for the XML file.$xml = new XML("bar.xml");
135// Check whether a search term was given.if ( !empty($term) ){
// Only select those cocktail, in whose name or position140 // the search string is present.
$government = $xml->evaluate("//cocktail/*[contains(., $term)]/..");
}else
145 {// Select all members of the government.$government = $xml->evaluate("//cocktail");
}
150 // Run through all members of the government.foreach ( $government as $cocktail ){
// Retrieve information about the cocktail.// and Display the information.
155 $name = $xml->get_content($cocktail."/name[1]");
?>
160 evaluate($cocktail."/zutat");
B.2 Serverside xml2html mit PHP 69
foreach ( $zutat as $unddazu )165 {
$substanz =$xml->get_content($unddazu."/substanz[1]");
$menge = $xml->get_content($unddazu."/menge[1]");?>
170
get_content($cocktail."/dekoration[1]");180 $mixanleitung =
$xml->get_content($cocktail."/mixanleitung[1]");$foto = $xml->get_content($cocktail."/foto[1]");
?>185
190
195
200
70 Anhang B Programm-Listings
B.3 xml2tex mit Java
1 import javax.xml.parsers.*;import org.xml.sax.*;import org.xml.sax.helpers.*;import java.io.*;
5public class BarListe extends DefaultHandler{
private String elementname;private String attrib_cocktail;
10private String normaldata = "";private String substanz = "";private String menge = "";private boolean zutatflag = false;
15
public void startDocument() throws SAXException{
System.out.println("\\documentclass[12pt]{article}");20 System.out.println("\\usepackage[latin1]{inputenc}");
System.out.println("\\usepackage{german}");System.out.println("\\begin{document}");
}25
public void startElement(String nsu, String ln,String qn, Attributes attr)
throws SAXException{
30 elementname=qn;
if (elementname.equals("name")) {System.out.print("\n\\section*{");
}35
if (elementname.equals("mixanleitung")) {System.out.println("\n\\subsection*{Mixanleitung}");
}
40 if (elementname.equals("dekoration")) {System.out.println("\\end{tabular}");zutatflag = false;System.out.println("\n\\subsection*{Dekoration}");
}45
if(elementname.equals("zutat")) {menge = "";substanz = "";
50 if (!zutatflag) {System.out.println("\n\\begin{tabular}{ll}");zutatflag = true;
}
B.3 xml2tex mit Java 71
}55
if(elementname.equals("name")){attrib_cocktail =
attr.getValue("klassifizierung");}
60normaldata = "";
}
65 public void characters(char[] cont, int start, int len)throws SAXException{
if(elementname.equals("name") ||elementname.equals("dekoration") ||
70 elementname.equals("mixanleitung")) {normaldata = normaldata +new String(cont, start, len).trim() + "\n";
}
75 if (elementname.equals("substanz")) {substanz = new String(cont, start, len);
}if (elementname.equals("menge")) {
menge = new String(cont, start, len);80 System.out.println("\\textsl{" + menge +"}: & " +
substanz + "\\\\");}
}85
public void endElement(String nsu, String ln, String qn)throws SAXException{
elementname=qn;90
if (elementname.equals("name")) {normaldata = normaldata.trim();System.out.println(normaldata +
" (" + attrib_cocktail + ")}");95 }
if ((elementname.equals("dekoration")) ||(elementname.equals("mixanleitung"))) {normaldata = normaldata.trim();
100if (normaldata.equals("")) {
System.out.println("---");} else {
System.out.println(normaldata);105 }
}
if (elementname.equals("cocktail")) {
72 Anhang B Programm-Listings
System.out.println("\n\\newpage");110 }
}
115 public void endDocument() throws SAXException{
System.out.println("\\end{document}");
}120
public void warning(SAXException spex){System.err.println("Warnung!!!!!!");spex.printStackTrace(System.err);
}125
public void error(SAXException spex){System.err.println("Fehler!!!!!!");spex.printStackTrace(System.err);
}130
public void fatalError(SAXException spex){System.err.println(\"Abbruch!!!!!!");spex.printStackTrace(System.err);
}135
public static void main(String[] args){SAXParserFactory saxpafac =
140 SAXParserFactory.newInstance();saxpafac.setValidating(true);
try{145 SAXParser saxpa = saxpafac.newSAXParser();
saxpa.parse(args[0], new BarListe());
} catch (ParserConfigurationException pcex){150 pcex.printStackTrace(System.err);
} catch (SAXException sex){sex.printStackTrace(System.err);
} catch (IOException ioex){ioex.printStackTrace(System.err);
155 }}
}
Anhang I Index
#FIXED, 45#IMPLIED, 45#PCDATA, 36, 40#REQUIRED, 45
ANY, 36, 40ATTLIST, 43Attribut, 13, 14, 16
Apostrophe, 14Attributname, 43Attributtyp, 43Elementname, 43Quotes, 14
CDATA, 16, 44Cocktail
Alexander, 31Angels Face, 9B52, 19Cuba Libre, 46Dagobert Duck, 26Gin Fizz, 53Julia, 36Manhattan, 1Mike Collins, 57Pangalaktischer Donnergurgler, 40Tequila Sunrise, 41Tom Collins, 49Troubleshooter, 3
Cocktail Meta Language, 56CSS, 4, 25
DOCTYPE, 32DTD, 29
Attribute, 41Elemente, 36Entitten, 46Externe Deklaration, 33Generelle Entitten, 46Interne Deklaration, 32Notationen, 49Parameter Entitten, 46
ELEMENT, 36Element, 10, 11
Abhngigkeiten, 36Elementauswahl, 39Elementfolge, 38Elementinhalt, 36Elementmodell, 37Elementname, 36Hufigkeitsangaben, 37leer, 12, 13
EMPTY, 36encoding, 28Entitt, 10, 1316, 46
als Textbaustein, 46Entityinhalt, 47Entityname, 47
ENTITIES, 44ENTITY, 44, 47
Hufigkeitsangabenfr Elemente?*+, 38
HTML, 5, 19, 25, 35
ID, 44
Java, 21
Kommentare, 29
Leerraum, 13
Marke, 12, 16Markup, 4, 10
Language, 4
Namenqualifizierte, 54
Namensraum, 17unserer, 53
NDATA, 48, 49NMTOKEN, 44NMTOKENS, 44NOTATION, 49Notationen
Hilfsanwendung, 49Notationsname, 49
74 Index
Parser, 16, 19, 23Gltigkeit, 20Wohlgeformtheit, 20
PHP, 21Prolog, 10, 23, 24PUBLIC, 34, 35, 48
Regelwerk, 32
SGML, 5Anwendung, 5, 12
standalone, 28, 32SYSTEM, 34, 48, 49
Tag, 4, 10, 12Textbausteine
Entitten als, 46
UCS, 15, 16, 22UTF, 22
Verarbeitungsanweisung, 24Formatierung durch, 24xml, 28
version, 28
Wurzelelement, 10, 11, 13, 24
XHTML, 5, 34, 35XLink, 4XML, 4
DokumentAufbau, 10Sektion, 10
XML-AnwendungenJava-Klassen, 59phpxml-1.0, 58Serverside, 28, 57
xmlint, 21xmlns, 54, 56XPath, 4XSL, 4, 24, 25, 28
AperitifWie dieses Kapitel zu seinem Namen kamWer sollte diese Broschre lesen?
BargeflsterAufgeschnappte SatzfragmenteXML --- die ZutatenlisteVerwandtschaften: HTML, SGML, XHTML, Aufgaben zur Selbstkontrolle
Was alles in den Shaker kommtAufbau eines XML-DokumentsElementinhalteMarken in XML und HTMLAttributeWarum Character Data nicht einfach Text istNamen: nur Schall und Rauch?Aufgaben zur Selbstkontrolle
Gerhrt und geschtteltAus Zutaten wird ein Drink, oder: Der Parser oder 0000000000000000000000011000100?XML arbeitetKommentareAufgaben zur Selbstkontrolle
Was alles in den Shaker darfDTDElementeAttributeEntittenParameter-EntittenGenerelle EntittenNotationenAufgaben zur Selbstkontrolle
Unbekannte RezepturenNamensrume -- oder: Der Ehren-Cod