vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Tag 3

Gültige XML- Instanzen

Sie kennen jetzt die Syntaxregeln, die wohl geformtes XML charakterisieren. Heute werden Sie das Konzept der Gültigkeit bei XML kennen lernen.

Sie werden erfahren:

3.1 Welche Bedeutung hat die Gültigkeit bei XML?

Sie haben gesehen, dass die Verwendung von XML eine strenge Einhaltung der Syntax erfordert und dass die Parser und Prozessoren, die für XML verwendet werden, keine Verletzung der Regeln durchgehen lassen. Ein XML-Parser betrachtet Ihr Dokument als fehlerhaft, wenn es nur den kleinsten Syntaxfehler enthält. Wozu braucht man ein noch komplexeres Regelsystem, wenn XML einen so hohen Grad an Beschränkungen aufweist?

Die Gültigkeit in XML steht im Zusammenhang mit der Dokumentstruktur. Sie haben am ersten Tag gelernt, dass XML eine Methode enthält, wie man strukturierte Daten in einer Textdatei platziert. Die Struktur hängt jedoch nicht nur mit der Syntax zusammen. Ein XML-Dokument kann syntaktisch vollkommen korrekt sein, aber Elemente in einer falschen Reihenfolge oder Ausschlusselemente enthalten, die ein Prozessor für die Beendigung einer E-Commerce-Transaktion oder zur Lösung eines bestimmten Problems benötigt.

Nehmen wir als Beispiel an, Sie wollten dieses Buch in XML auszeichnen. Sie würden für die im Vordergrund stehenden Dinge wahrscheinlich Elemente wie titel, autor, verlag, ISBN, datum, inhaltsverzeichnis usw. wählen. Im Buchkörper können Sie Auszeichnungen für kapitel, abschnitt, absatz, nachdruck, anmerkung, tipp, tabelle und viele andere einschließen. Sie sehen, dass die Auszeichnungen sehr komplex und ausgearbeitet sein können. Für unseren Zweck sollen die eben aufgezählten Elemente für die im Vordergrund stehenden Dinge genügen.

Listing 3.1 zeigt ein XML-Dokument, das ausgewählte Vordergrundelemente für dieses Buch auszeichnet.

Listing 3.1: Ausgezeichnete Hauptelemente in XML - MeinXMLBuch.xml

 1<?xml version="1.0"?>
2<!-- listing 3.1 - meinXMLBuch.xml -->
3
4 <buch>
5 <titel>XML in 21 Tagen, Zweite Ausgabe</titel>
6 <autor>Devan Shepherd</autor>
7 <verlag>Markt und Technik</verlag>
8 <isbn>0-672-32093-2</isbn>
9 <datum>Juni 2001</datum>
10 <inhaltsverzeichnis>
11 <tag zahl="1">Ein Ueberblick ueber die
12 Auszeichnungssprachen</tag>
13 <tag zahl="2">Die XML-Syntax im Detail</tag>
14 <tag zahl="3">Gueltige XML-Instanzen</tag>
15 </inhaltsverzeichnis>
16 </buch>

Das Wurzelelement buch (Zeilen 4-16) enthält die abgeleiteten Elemente titel, autor, verlag, isbn, datum und inhaltsverzeichnis. Alle sind wohl geformt und haben Start- und Schluss-Tags, die in der passenden Schreibweise angezeigt werden. Die abgeleiteten Elemente sind korrekt eingebettet und Start- und Schluss-Tags überschneiden sich nicht. Das Element inhaltsverzeichnis hat drei abgeleitete tag-Elemente mit Textinhalt. Die zahl-Attribute für die tag-Elemente dienen dazu, die tag-Elemente wie Adjektive die Nomina in einer gesprochenen Sprache zu modifizieren.

Das XML-Dokument in Listing 3.1 ist nicht nur wohl geformt und hat einen logischen, vom Computer auslesbaren Code, sondern es ist auch für Menschen leicht verständlich. Die Struktur dieses Dokuments könnte mit einem einfachen Baumdiagramm dargestellt werden, wie in Abbildung 3.1 gezeigt. Sie haben jedoch noch nicht die Regeln gesetzt, die diese Struktur erzwingen.

Abbildung 3.1:  Die XML-Hauptelemente für XML in 21 Tagen, Zweite Ausgabe, in Baumstruktur

Betrachten Sie nun das Dokument in Listing 3.2. Auch dabei handelt es sich um ein wohl geformtes XML-Dokument. Sie können das nachweisen, wenn Sie einen XML-Parser darüber laufen lassen. Sie sehen, dass der Internet Explorer keine Fehler meldet und ein formatiertes Listing der Instanz anzeigt, wie Listing 3.2 sie darstellt. Sie werden sich erinnern, dass dies dem eingebauten Parser des Internet Explorers zu verdanken ist. Auch wenn das Dokument wohl geformt ist, hat es nicht mehr viel Ähnlichkeit mit der Struktur, die in Abbildung 3.1 als Diagramm dargestellt ist, und es wäre nicht dazu geeignet, die Vordergrundelemente in diesem Buch auszuzeichnen.

Listing 3.2: Ein wohl geformtes aber schlecht strukturiertes XML-Dokument - verschiedene_hauptelemente.xml

 1: <?xml version="1.0"?>
2: <!-- listing 3.2 - verschiedene_hauptelemente.xml -->
3:
4: <buch>
5: <inhaltsverzeichnis>
6: <tag zahl="1">Ein Ueberblick ueber die Auszeichnungssprachen</tag>
7: <titel>Was Sie schon immer ueber XML wissen wollten</titel>
8: <titel>XML und Warum Katzen Laserstrahlen jagen</titel>
9: <datum>Juli 2001</datum>
10: <datum>Juni 2001</datum>
11: <datum>August 1908</datum>
12: <autor>Devan Shepherd</autor>
13: <verlag>Markt und Technik</verlag>
14: <titel>XML in 21 Tagen, Markt und Technik, Zweite Ausgabe</titel>
15: <tag zahl="1">Ein Ueberblick ueber die Auszeichnungssprachen</tag>
16: <titel>XML in 21 Tagen, Markt und Technik, Zweite Ausgabe</titel>
17: <datum>Juni 2001</datum>
18: <tag zahl="2">Die XML-Syntax im Detail</tag>
19: <isbn>0-672-32093-2</isbn>
20: <tag zahl="3">Gueltige XML-Instanzen</tag>
21: </inhaltsverzeichnis>
22: </buch>

Die wohl geformte Instanz aus Listing 3.2 enthält mehrere Daten und Titel in einer unlogischen Elementanordnung und macht intuitiv keinen Sinn. Das Element inhaltsverzeichnis etwa enthält Daten und andere Elemente, die kein typischer Bestandteil eines Inhaltsverzeichnisses sind. Das entspricht in keiner Weise der Absicht, die Sie hatten, als Sie die Hauptelemente in diesem Buch auszeichnen wollten.

Sie brauchen einen Mechanismus, der Beschränkungen vorsieht, die über die Wohlgeformtheit hinausgehen. Wenn Sie dieses Buch mit XML-Auszeichnungen beschreiben wollen, ist es sinnvoll, einen Mechanismus zu verwenden, der bestimmte einfache Beschränkungen durchsetzt. In vielen Fällen erzwingen diese Beschränkungen Regeln für den Dokumentinhalt, Geschäftsrichtlinien oder Bestimmungen zur Anordnung der Elemente, der Präsenz von Elementen und Attributen sowie einen Hinweis auf die Anzahl des erwarteten Auftretens. Für die Instanz der Hauptelemente im Buch wollen Sie sicher strukturelle Richtlinien festlegen, wie die Ffolgenden:

Diese einfachen Inhaltsregeln können in ein Schema eingebaut werden, das dazu dient, die Struktur der XML-Instanz zu definieren. Stellen Sie sich das Schema wie einen Vertrag vor, den Sie mit XML abschließen, um sicherzustellen, dass die gewünschte Struktur eingehalten wird. Als Programmierer erzeugen Sie ein Schema, das auf Ihr Dokument angewendet werden soll und gut auf die Geschäftsprobleme abgestimmt ist, die Sie behandeln möchten. Vielleicht können Sie sogar eines aus einem öffentlich zugänglichen Bestand von Schemata auswählen. Die meisten Schemata sind wie die anderen Teile der XML-Familie von Natur aus erweiterbar. Wenn also ein bestehendes Schema zu 80% auf Ihre Angelegenheit passt, können Sie es erweitern und auf Ihre speziellen Bedürfnisse zuschneiden. Wenn Sie dann Daten gemeinsam mit Anderen verwenden, können Sie Ihr erweitertes Schema einfügen, um sicherzustellen, dass alle sich nach Ihrem XML- Datenstrom richten.

Es ist nicht immer nötig, ein einzigartiges Schema zu erstellen. Es gibt große Bestände von öffentlich zugänglichen Schemata, die im Web bereitgehalten werden, damit bestimmte Industriezweige sie nutzen können.

Es gibt verschiedene Arten von Schemata, die bei der XML-Programmierung verwendet werden. Am vierten Tag werden Sie lernen, wie man Document Type Definition (DTD)- Schemata erstellt, anwendet und interpretiert. Der DTD-Ansatz gründet in SGML und wurde für XML beibehalten, aber er krankt an einigen Unzulänglichkeiten hinsichtlich der Beschränkungen zum Datentyp und hat eine Syntax, die nicht derjenigen von XML entspricht. Am 5. und 6. Tag werden Sie jeweils den sehr leistungsstarken Dialekt XML- Data Reduced-Schema (XDR) und die Sprache XML-Schema-Definition (XSD) kennen lernen, die vom W3C empfohlen wird. Alle drei Technologien bieten eine Methode an, mit der Sie die Regeln erzwingen können, die die Struktur Ihres Dokuments definieren. Jeder Ansatz hat Vor- und Nachteile, aber mit der Zeit dürften sich die verschiedenen Methoden zu einem W3C-Standard zusammenfügen, der von der Industrie und den Entwicklern von Software-Tools breit unterstützt werden wird.

Die Datentyp-Validierung erzwingt eine Klassifizierung der Datenwerte. Sie stellt eine Methode dar, mit der ein Computer Zahlentypen wie Integer, Prozentzahlen, Fließkommazahlen, Daten und Strings unterscheiden kann, um nur einige zu nennen.

3.2 Datentyp-Validierung - ein weiterer Grund für die Regeln der Gültigkeit

Der Bedarf nach Gültigkeit für Dokumente geht sicherlich über die bloßen Bedürfnisse der vorangehenden Beispiele für die Buch-Auszeichnung hinaus. Stellen Sie sich vor, Sie führen eine Business-to-Business-Transaktion (B2B) mit einem Geschäftspartner via Internet durch. Einer der Hauptvorzüge von XML für B2B liegt in der Plattformunabhängigkeit. Sie können Geschäfte über das Web erledigen, ohne davon abhängig zu sein, welches Betriebssystem Ihr Partner verwendet oder welche Programmier- und Datenbanksprachen bei ihm unterstützt werden. Dies gilt jedoch nur dann, wenn Sie Die Struktur der auszutauschenden Dokumente garantieren können (oder vielleicht sogar erzwingen). Sie müssen vielleicht nicht nur die Struktur der Transaktion in Hinblick auf die Elementanordnung und den Aufbau sicherstellen, sondern auch hinsichtlich der Datentyp- Validierung.

Elemente und Attributswerte, die so einfach sind wie Daten, sind ohne sorgfältige Validierung möglicherweise fehleranfällig. Wenn sich Ihre Geschäftspartner in einem anderen Land befinden, kann es sein, dass sie per Konvention die Datumswerte in einem Format anzeigen, das sich von Ihrem unterscheidet. Alle Datumsformate, die in Tabelle 3.1 angezeigt sind, werden irgendwo auf der Welt eingesetzt, um z.B. den 9. Oktober 2001 anzuzeigen. Auch wenn vierstellige Jahreszahlen (die das Jahrhundert einschließen) inzwischen eher der Konvention entsprechen, werden hier die zweistelligen Jahreszahlen dargestellt, um die möglichen Gründe für ein Durcheinander genauer hervorzuheben.

Format

Wert

mmttjj

100901

ttmmjj

091001

jjttmm

010910

jjmmtt

011009

Tabelle 3.1: Beispiele für Datumsformate aus der ganzen Welt, die den 9. Oktober 2001 anzeigen 

Um die Integrität von Daten-Transaktionen mit Geschäftspartnern zu gewährleisten, müssen Sie vielleicht ein einziges Format durch ein Schema erzwingen. Sie sehen, dass die numerischen Werte allein sehr wenig Informationsgehalt haben und leicht missverstanden werden können, was eine Verarbeitung zur Folge hätte, die nicht korrekt wäre.

Sie werden lernen, wie man Datentypen mit einigen der Schema-Ansätze steuert, wie etwa XDR und XSD, die wir in diesem Buch vorstellen. Die Methodologie des DTD-Schemas stellt dagegen keine einfachen Mechanismen zur Validierung von Datentypen zur Verfügung. Dies ist einer der Unterschiede zwischen den DTD-Schemata und anderen Ansätzen. Sie werden am 5. und 6. Tag mehr darüber erfahren. Dann können Sie beim Erstellen Ihres eigenen Schemas die Methode auswählen, die für Ihren Bedarf am besten geeignet ist.

Man kann Datentypen durch Verwendung von Notationen in Verbindung mit DTD-Schemata auf begrenzte Weise beschreiben; dies ist jedoch nicht der ideale Ansatz.

Tabelle 3.2 zeigt einige Beispiele von Datentypen, die eine Validierung erfordern können, je nach Art der Information, die ausgetauscht werden soll. Wahrscheinlich haben Sie bei anderen Formen der Programmierung bereits eine Datentyp-Validierung eingesetzt.

Datentyp

Beschreibung

Boolescher Typ

0 (falsch) oder 1 (richtig)

Char

Einzelnes Zeichen (zum Beispiel »C«)

String

Zeichenkette (zum Beispiel »CIST 1463«)

Fließzeichen

Echte Zahl (zum Beispiel 123,4567890)

Int

Ganze Zahl (zum Beispiel 5)

Datum

Formatiert als JJJJ-MM-TT (zum Beispiel 2001-10-09)

Zeit

Formatiert als HH-MM-SS (zum Beispiel 18:45:00)

Id

Text, der ein Element oder Attribut eindeutig identifiziert

Idref

Referenz auf eine ID

Aufzählung

Reihe von Werten, aus der einer ausgewählt werden kann

Tabelle 3.2: Beispiele für Datentypen 

Die Datentypisierung wird verwendet, um das Wesen einzelner Datenelemente genauer zu bestimmen. Die Struktur eines Dokuments ist wieder ein anderer Gesichtspunkt. Die Struktur ist ein Schema für den Aufbau von Informationsstücken, die miteinander in einer Beziehung stehen. Die Reihenfolge und Platzierung von Elementen bei XML ist häufig Teil der definierten Struktur des Dokuments der XML-Instanz. Im nächsten Abschnitt werden Sie mehr zu einigen Punkten erfahren, die mit Strukturen bei XML in Zusammenhang stehen.

3.3 Wie erkennt man eine Datenstruktur?

Die Listings zu den XML-Dokumenten, die Sie heute betrachtet haben, vor allem Listing 3.1 und 3.2, hatten viele Elemente gemeinsam, waren aber unterschiedlich strukturiert. Die Anordnung der Elemente war nicht identisch, auch wenn die gleichen Elementnamen verwendet wurden. Das Ergebnis war, dass eines der Dokumente intuitiv und einfach zu verfolgen war (Listing 3.1), während das andere (Listing 3.2) der gewünschten Auszeichnung nicht besonders gut entsprach.

Die Struktur in der Auszeichnungssprache des Rezepts

In XML müssen Sie Ihre Dokumente sehr genau untersuchen und die Datenstrukturen verstehen, unabhängig von allen Sorgen, die Ihnen die Ausgabe durch den Browser vielleicht macht. Am 2. Tag haben Sie die Struktur eines Rezepts untersucht und zwei Modelle erstellt, um diese Struktur anzuzeigen. Eines war ein Blockdiagramm (Abbildung 2.2), das andere zeigte die Baumansicht des Rezepts. Sie konnten auswählen, welche der Punkte auf der Rezeptseite wichtig genug waren, um sie als getrennte Datenstücke zu behandeln. Schließlich haben Sie die Datei bohnentunke4.xml erstellt, die in Listing 3.3 dargestellt wird.

Listing 3.3: bohnentunke4.xml

 1 <?xml version="1.0"?>
2 <rezept titel="Devans Bohnentunke">
3 <zutaten>
4 <posten menge="1 Tasse">gebratene Bohnen</posten>
5 <posten menge="1 Tasse">Burrito-Sauce</posten>
6 <posten menge="150 gr">gewuerfelter Jalapeno-Kaese</posten>
7 <posten menge="1/2 Tasse">saure Sahne</posten>
8 </zutaten>
9 <zubereitung>Bohnen und Burrito-Sauce in Pfanne mittlerer
10 Groesse anheizen bis sie kochen, gewuerfelten
11 Kaese dazugeben und umruehren, bis er schmilzt.
12 Vom Herd nehmen und saure Sahne
einruehren.</zubereitung>
13 <!--Fuer eine besonders scharfe Bohnentunke fuegen Sie der
14 Mischung Ihre bevorzugte scharfe Sosse zu -->
15 <serviervorschlag>Als Tunke mit Tortilla-Chips
16 aus Mais servieren</serviervorschlag>
17 </rezept>

Der Prozess, den Sie durchgeführt haben, um die Struktur des Rezeptdokuments aufzuzeichnen, war, ein Modell zu erzeugen, einen Baum, fast so etwas wie eine Landkarte für die Informationen, die auf der Rezeptkarte vorhanden sind. Dann haben Sie Element- und Attributsnamen festgelegt, die sich selbst beschrieben und intuitiv waren. Sie haben die Informationen an einen Parser zur Auswertung übergeben und damit bewiesen, dass sie computerlesbar sind, und Sie haben sie sich dann selbst angesehen, was zeigte, dass sie auch für den Menschen verständlich sind. Das ist ein recht typisches Beispiel für die Herangehensweise, die Sie das nächste Mal unternehmen können, wenn Sie eine XML- Instanz erzeugen, die auf einem Dokument mit einer bekannten Struktur basiert. Um sie gültig zu machen, müssen Sie nur die Regeln berücksichtigen, die mit dieser Struktur zusammenhängen, und dann ein zugeordnetes Schema schreiben, das diese Regeln erzwingt, wenn das Dokument geparst wird. Für die abschließende Auszeichnungssprache für Rezepte sind das in etwa folgende Regeln:

Vielleicht verwenden Sie bereits strukturierte Daten

In der Geschäftswelt arbeiten Sie vielleicht bereits mit Dokumentstrukturen. Einige davon werden wohl sogar strikt durchgesetzt, sei es aus Übereinkunft oder weil es der Firmenpolitik entspricht. Wie in vielen Firmen gibt es vielleicht auch bei Ihnen Richtlinien für die Korrespondenz, bestimmte Formate für Memoranden, Rechnungen usw. Eine gute Dokumentstruktur erkennt man normalerweise besser als eine gute Datenstruktur. Wenn Sie an Datenstrukturen denken, stellen Sie sich Datenbanken vor und die feste Struktur, die von integrierten Datenwörterbüchern durchgesetzt wird. Das ist ein gutes Beispiel, weil die Regeln für Datenstrukturen in Datenbanken, genau wie die in XML, mehr die Charakterisierung der Daten betreffen als die Frage, wie diese Daten als Formular oder als Bericht wiedergegeben werden. Der Umgang mit der Ausgabe aus einer Datenbank erfordert die Verwendung eines Listengenerators oder einer anderer Anwendung, Funktion oder Abfrage, die vom Speicher und der Validierung der Daten selbst abgetrennt ist. Das gilt auch für XML. XML selbst dreht sich nur um Daten und es erfordert die Verwendung zusätzlicher Hilfstechnologien, um eine Ausgabe zu erzeugen.

Wenn Sie sich mit der Gültigkeit bei XML beschäftigen, heißt das nichts anderes, als dass Sie sich mit der Datenstruktur und nicht mit der Präsentation beschäftigen. Webentwickler mussten eine Zeit lang die Struktur elektronischer Inhalte und die Fragen der Speicherung, Ermittlung, Wartung und Übermittlung dieses Materials betrachten, statt sich bloß darum zu kümmern, wie diese Daten in einem Browserfenster wiedergegeben werden. Technische Autoren, Fachleute für die Dokumentation und in gewissem Maß sogar Anwälte, die Verträge und rechtliche Gutachten erstellen, mussten sich jahrelang mit komplexen Mengen vordefinierter und strikt durchgesetzter Dokumentstrukturen befassen. XML bietet eine Methode, wie man Strukturen kodifiziert und sie mit Geschäftspartnern oder anderen Anwendern, die Informationen nutzen, teilen kann.

Wie bereits festgestellt wurde, dreht sich bei XML alles um Daten. XML selbst hat keine Vorlagen, die sich um die Wiedergabe dieser Daten kümmern. Anders als eine Dokumentstruktur, die sich normalerweise leicht auf einem Wiedergabegerät abbilden lässt, sind Datenstrukturen bei XML nur dazu da, den eigentlichen Kern der Daten einzubauen. Die Wiedergabe erfolgt mit einer Reihe verschiedener Ansätze, die aber alle Hilfsmittel darstellen und zu denen etwa die Cascading Stylesheets, die Extensible Stylesheet Language (XSL), ein Teil von XSL, der als Extensible Stylesheet Language Transformations (XSLT) bekannt ist, und das Scripting gehören, mit denen die in XML gespeicherten Strukturen wiedergegeben werden. Sie werden im Laufe dieses Buchs mit all diesen Techniken bekannt gemacht.

Die Tatsache, dass XML das Merkmal hat, Datenstrukturen von Stil und Inhalt zu trennen, ist Teil dessen, was XML von Natur aus mit anderen Anwendungen zusammenarbeiten lässt. Die gleiche XML-Instanz kann verwendet werden, um am Ende gedruckte Berichte oder ein Speichermedium auf CD-ROM zu erstellen oder die Daten an Browser, Handys und Kleincomputer sowie eine Reihe anderer Clients zu übergeben.

Worin liegt dann der Unterschied zwischen einer Dokumentstruktur und einer Datenstruktur? Die Dokumentstruktur stellt einen Leser vor einen Methodenaufbau, mit dem er schnell dem Pfad der Informationsvermittlung folgen kann, die ein Autor wünscht. Wenn Sie ein Memorandum an einen Kollegen schreiben, geben Sie normalerweise den Adressaten an, sowie Ihren Namen als Autor und ein Datum, vielleicht einen Betreff oder eine Angabe zur Priorität, wonach der eigentliche Nachrichtentext folgt. Der Empfänger des Dokuments kann dank der Dokumentstruktur schnell all diese Komponenten erkennen und sich ein Bild machen, ohne durch Details abgelenkt zu werden. Datenstrukturen spiegeln den Inhalt wieder und liefern den Computeranwendungen eine Art Landkarte, ähnlich einem Index mit Schlüsselwörtern - zu den Daten, die in verschiedenen Containern und Sub-Containern im Kontext des Gesamtdokuments abgelegt sind. Die Datenstruktur bietet keine Wertung der Wichtigkeit einer Komponente im Dokument gegenüber einer anderen. Alle sind gleich relevant und es bleibt der Anwendung oder dem XML-Prozessor überlassen, wie die Daten aus dem Container verwendet werden.

Unstrukturierten Informationen mit XML eine Struktur geben

XML bietet Ihnen einen optimalen Mechanismus für die Verwendung strukturierter Daten zur Informationsübermittlung. Mit XML ist es einfach, strukturierte und weniger strukturierte Daten aneinander anzupassen und zu vermischen, sei es Text, numerische Daten oder Strings, um extrem anwenderdefinierte Ausgabeströme zu erzeugen, die für bestimmte Bedürfnisse geeignet sind. Das Gleiche könnten Sie mit einer Reihe von Programmiertechniken erreichen, aber XML wurde ausdrücklich für diese Art von Bedarf gestaltet.

Tabelle 3.3 ist ein Auszug aus einer Datenbank, in der die von einer Schulungsorganisation angebotenen XML-Kurse abgelegt sind. Das Format der Datenbanktabelle enthält Einträge für jeden Kurs und die Felder Kurs_Nummer, Kurs_Name und Dozent.

Kursnummer

Kursname

Dozent

XML 111

XML für Anfänger

Bob Gonzales

XML 333

XML für Fortgeschrittene

Devan Shepherd

XML 222

XMetal Core-Konfiguration

Gene Yong

Tabelle 3.3: Datenbank-Tabelle mit Kurs-Auflistungen 

Würden die Daten in dieser Tabelle in einer Textdatei gespeichert, in der mit Kommata getrennt wird (eine CSV-Datei), würde das Ergebnis in etwa wie in Listing 3.4 aussehen.

Listing 3.4: Komma-separierte Textversion der Datenbankeinträge

Kurs_Nummer,Kurs_Name,Dozent
XML111,XML für Anfänger,Bob Gonzales
XML333,XML für Fortgeschrittene,Devan Shepherd
XMT222,XMetal Core-Konfiguration,Gene Yong

XML bietet eine Methode an, mit der diese Daten durch zusätzliche Informationen ergänzt werden können, die für Menschen oder Computer von Interesse sein können. Listing 3.5 etwa zeigt die gleichen Daten mit zusätzlichen Informationen, die zum Erstellen einer Pressemitteilung über das kommende Kursangebot zu verwenden sind.

Listing 3.5: Hochstrukturierte Daten aus einer Datenbank, kombiniert mit zusätzlichen Informationen in XML

 1: <?xml version="1.0"?>
2: <!-- listing 3.5 - kurse.xml -->
3:
4: <ankuendigung>
5: <best>Zur sofortigen Veroeffentlichung</best>
6: <an>Alle potenziellen Studenten</an>
7: <von>Devan Shepherd</von>
8: <thema>Oeffentliches Kursangebot im August</thema>
9: <notiz>ACME-Training freut sich, folgende oeffentlichen
10: Kurse ankuendigen zu koennen, die monatlich angeboten werden.</notiz>
11: <kontakt>Weitere Informationen und Einschreibung zu diesen
12: Kursen unter
13: <Website>http://ACME-Train.com/university</Website></kontakt>
14: <kurse>
15: <kurs id="XML111" dozent="Bob Gonzales">
16: XML fuer Anfaenger</kurs>
17: <kurs id="XML333" dozent="Devan Shepherd">
18: XML fuer Fortgeschrittene</kurs>
19: <kurs id="XMT222" dozent="Gene Yong">
20: XMetal Core-Konfiguration</kurs>
21: </kurse>
22: </ankuendigung>

Die XML-Ausgabe ist wesentlich nützlicher als die mit Kommata separierte Textversion, nicht nur wegen der Zusatzinformationen, sondern auch weil in den Kurselementen Attribute verwendet werden. Diese XML-Quelle kann zum Erstellen einer E-Mail- Mitteilung, eines Mitteilungsblatts oder anderer gedruckter Dokumente verwendet werden. Die gleichen Daten können auch durch ein Programm gesteuert in eine andere Auszeichnungssprache umgewandelt werden, die von einem kommerziellen Werbedienst verwendet wird. Mit XML-Technologien kann man auch eine Ausgabe aus der gleichen Quelldatei für webfähige drahtlose Geräte wie etwa Handys, Kleincomputer, Pager usw. erzeugen.

Am 14. Tag werden Sie lernen, wie man Cascading Stylesheets (CSS) verwendet. Am 15. und 16. Tag werden Sie die Extensible Stylesheet Language (XSL) und deren Teilbereich, Extensible Stylesheet Language Transformations (XSLT) kennen lernen, um Ausgaben wie diese für die Verwendung durch Browser und andere Clients, Geräte und Prozessoren zu formatieren.

Gültiges XML garantiert die Integrität einer Datenstruktur, als wäre ein Vertrag mit der XML-Instanz abgeschlossen worden. Die Automatisierung der Inhaltsübermittlung wird durch diese Garantie erleichtert und kann mit XSLT erfolgen.

3.4 Auf Gültigkeit parsen

Sie haben bereits in den bisherigen Übungen einen Parser verwendet. Der Browser Internet Explorer von Microsoft enthält in den Versionen 5.0 und höher den MSXML- Parser. Sie konnten mit dem MSXML-Parser Ihre Dokumente überprüfen, um sicherzustellen, dass sie wohl geformt sind. Parser kann man aber auch dazu nutzen, XML hinsichtlich eines Schemas wie DTD, XDR, XSD oder eines anderen Dokuments in einer Schemasprache zu prüfen, vorausgesetzt der Parser enthält die Programmierung für die Regeln dieser Sprache. Sie können das in Abbildung 3.2 sehen.

Abbildung 3.2:  Ein XML-Dokument mit einem zugeordneten Schema wird an einen prüfenden XML-Parser weitergegeben.

Ein gültiges XML-Dokument ist gleichzeitig wohl geformt; es gibt aber keine Garantie dafür, dass eine wohl geformte XML-Instanz gleichzeitig gültig ist.

Ein validierender oder prüfender Parser überprüft eine Instanz zunächst um sicherzustellen, dass sie die grundlegenden Syntaxregeln von XML befolgt, also wohl geformt ist. Dann bestätigt er, dass alle Beschränkungen zu den Inhaltsregeln des Dokuments, die das Schema festlegt, das Sie ihm zugeordnet haben, voll erfüllt werden (oder auch mehrere Schemata, da Sie dem Dokument mehr als eines zuordnen können). Dadurch wird die Gültigkeit Ihres Dokuments garantiert. Anders gesagt bestätigen validierende Parser die Syntax und die Datenstruktur.

Ein Parser ist eine Software, die den Text Zeichen für Zeichen interpretiert, außer ein Programmierer oder Schema-Autor gibt an, dass er bestimmte Datensequenzen auslassen soll. XML stellt Ihnen eine Methode zur Verfügung, mit diesen Parserprogrammen die semantische Absicht der Auszeichnungen, die auf den Text angewendet werden, zu verstehen.

Das W3C bezeichnet Parser in der offiziellen Spezifikation zu XML 1.0 als XML-Prozessor: »Ein Software-Modul, das XML-Prozessor genannt wird, wird verwendet, um XML-Dokumente zu lesen und einen Zugriff auf ihren Inhalt und ihre Struktur zu ermöglichen.« (Vergleichen Sie die technische Empfehlung zu XML unter http://www.w3.org/TR/1998/REC-xml-19980210 für weitere Einzelheiten.)

Nachdem der Parser das XML-Dokument interpretiert hat und auf Wohlgeformtheit und Gültigkeit geprüft hat, stellt er die Daten in Form einer Dokumentbaum-Struktur für andere Anwendungen zur weiteren Verarbeitung zur Verfügung. Sie haben die Verwendung des IE5 in diesem Zusammenhang bereits untersucht, der die Baumstruktur, die der MSXML-Parser zurückgibt, zur Anzeige eines strukturierten Dokuments im Browserfenster verwendet und anzeigt, dass alles so aussieht, wie es sollte. Sie erinnern sich sicher, dass IE die XSLT-Verarbeitung verwendet, um dem Dokument ein standardmäßiges Stylesheet zuzuweisen, wenn Sie es im Browserfenster ansehen. Dadurch entsteht zum Beispiel die farbige Anzeige der Auszeichnungen im IE. Andernfalls fängt der IE den Fehler auf, den der Parser aufwirft, und zeigt ihn zusammen mit einem Codeausschnitt an dem Punkt in Ihrem Dokument an, wo der Fehler aufgetreten ist, ohne das gesamte Dokument der XML-Instanz aufzuzeigen oder für die Formatierung umzuwandeln.

Dieses vorherrschende Konzept von Dokumenten, die als Baumstrukturen aufgebaut sind, ist einer der Gründe, warum Sie am zweiten Tag gelernt haben, wie man ein Dokument auf diese Weise darstellt (vgl. Abb. 2.3). Das Konzept des Dokumentbaums wird Ihnen noch häufig begegnen im Verlauf der nächsten Wochen. Am 12. Tag werden Sie lernen, wie man die Document Object Model (DOM)-API verwendet, um einzelne Knoten in Ihren XML-Bäumen zu manipulieren.

3.5 Ist die Gültigkeit alles, was Sie brauchen?

Sie haben gesehen, dass die Gültigkeit strukturelle Beschränkungen sichert, aber ist damit auch garantiert, dass diejenigen, mit denen Sie die Informationen austauschen, wissen, wie sie damit umgehen sollen? Nicht unbedingt! Alles, was durch die Gültigkeit sichergestellt ist, ist die Struktur der Daten in Ihrer XML-Instanz, es hängt von der Anwendung ab, zu bestimmen, wie diese Daten manipuliert oder weiterverarbeitet werden. Auch wenn Sie Ihr Schema zusammen mit Ihrem XML-Dokument freigeben, reichen diese beiden Teile nicht zur vollständigen Anwendung dieser Daten auf die Lösung von Geschäftsproblemen aus.

Ein weiteres typisches Missverständnis ist, das Schema für einen notwendigen Bestandteil von Geschäftstätigkeiten mithilfe von XML zu halten. Ein Schema ist eine gute Methode, aber nicht die einzige, die für die Integrität der von XML erzeugten Daten sorgt. Ein wichtiger Vorteil bei der Verwendung von Schemata in Verbindung mit XML- Dokumenten zur Steuerung rechnererzeugter Inhalte, zur Verbesserung der Suchfunktion oder dem Validieren von Datenstrukturen ist, dass sie für diesen Zweck gedacht sind. Später werden Sie Daten mit Programmiertechniken manipulieren, ohne dass Sie die Logik für die Gültigkeit aufbauen müssen, wenn ein Schema Ihren XML-Dokumenten zugeordnet ist.

3.6 Zusammenfassung

Sie haben gelernt, dass ein Schema effektiv eingesetzt werden kann, um sicherzustellen, dass die Struktur der ausgezeichneten Daten so ist, wie Sie es erwarten. Besonders können Sie Folgendes tun, wenn die Vorgaben für die Gültigkeit in Kraft sind:

3.7 Fragen und Antworten

Frage:
Was ist der Unterschied zwischen wohl geformtem und gültigem XML?

Antwort:
Wohl geformtes XML hat eine perfekte Syntax - es stimmt mit den grundlegenden Regeln für alle XML-Dokumente überein. Gültiges XML ist wohl geformt und stimmt mit den Beschränkungen überein, die ein zugeordnetes Strukturschema auferlegt.

Frage:
Was sind einige der Beschränkungen, die ein Programmierer einbauen kann, wenn er ein Schema für ein XML-Dokument schreibt?

Antwort:
Ein Schema erzwingt den Namen und die Struktur des Wurzelelements einschließlich einer Spezifikation aller abgeleiteten Elemente. Der Programmierer kann die genaue Anordnung und die Menge für jedes Element festlegen und vorher bestimmen, welche Elemente obligatorisch und welche optional sind. Das Schema kann vorgeben, welche Elemente Attribute haben und die akzeptablen Attributswerte bestimmen, dazu alle Standardvorgaben festlegen. Wie im Fall der Elemente können Attribute obligatorisch oder optional gestaltet werden.

Frage:
Welche Schemasprachen werden von XML-Autoren verwendet?

Antwort:
Derzeit sind verschiedene Arten von Schemasprachen in Verwendung. Die Document Type Definition (DTD)-Sprache besteht seit den Tagen von SGML und wird morgen besprochen. Microsoft hat die Sprache XML Data Reduced (XDR) als Schema-Dialekt für XML herausgebracht (wird am 5. Tag besprochen). Das W3C arbeitet an einer Verschmelzung der XML-Dialekte für Schemata in eine Arbeitsform, die XML-Schemadefinitionssprache (XSD) genannt wird und die wir am 6. Tag vorstellen.

Frage:
Ist es möglich, Schemata zu verwenden, um die Datentypen in einem XML-Datenstrom zu steuern?

Antwort:
XDR und XSD haben viele Möglichkeiten zur Beschränkung der Datentypen. Der DTD-Ansatz kann Datentyp-Regeln nicht so einfach handhaben. Programmierer haben in einem frühen Stadium der XML-Entwicklung entschieden, dass die Datentyp-Validierung für XML, das für Transaktionsmodelle im E-Commerce und E-Business verwendet wird, von wesentlicher Bedeutung sein sollte.

Frage:
Was ist der Unterschied zwischen der Dokumentstruktur und der Datenstruktur?

Antwort:
Die Dokumentstruktur stellt einem Leser eine organisierte Methode bereit, wie er dem Pfad der Informationsübermittlung, die vom Autor gewünscht wird, schnell folgen kann. Datenstrukturen spiegeln den Inhalt wieder und liefern den Computeranwendungen eine Landkarte, ähnlich einem Index mit Schlüsselwörtern, für die Daten, die in verschiedenen Containern und Sub- Containern im Kontext des ganzen Dokuments abgelegt sind.

Frage:
Was ist ein Parser und was hat er mit der Gültigkeit zu tun?

Antwort:
Ein Parser ist eine Software (beim W3C als XML-Prozessor bezeichnet), die ein Textdokument Zeichen für Zeichen interpretiert. Es gibt zwei generische Parsertypen bei XML. Der eine nicht validierende Parser, kann nur sicherstellen, dass ein Dokument wohl geformt ist; das heißt, dass es die grundlegenden XML- Regeln für die Syntax erfüllt. Ein validierender Parser stellt sicher, dass ein Dokument wohl geformt ist und wendet dann den Dokumentinhalt oder die Beschränkungen durch Betriebsregeln, die durch ein zugeordnetes Schema bestimmt werden, auf das Dokument an, um sicherzustellen, dass es auch gültig ist.

3.8 Übung

Die Übung soll Ihre Kenntnis dessen, was Sie heute gelernt haben, überprüfen. Die Lösungen finden Sie in Anhang A.

Am Ende des 2. Tags sollten Sie in der Übung ein schlecht geformtes XML-Dokument korrigieren und aus ihm ein wohl geformtes Dokument machen. Es beschrieb zwei Alben einer Musiksammlung mit den Elementen cd, titel, kuenstler und stuecke. Sie sollen eine gültige Auszeichnungssprache für Musiksammlungen erstellen, die Sie MCML nennen werden. Auf der Grundlage der wohl geformten Lösung aus der letzten Übung erzeugen Sie ein Baumdiagramm für MCML und schreiben einige der Betriebsregeln auf, die verwendet werden können, um die Gültigkeit durchzusetzen.



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbackKapitelanfangnächstes Kapitel


© Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH