Wh: Überblick • XML: “Extensible Markup Language” • Entwickelt, um Informationen bereitzustellen, zu speichern und zu übertragen • Im Gegensatz zu HTML keine vordefinierten Elemente wie Anker, Überschriften, Listen und Links • Alle XML-Elemente eines XML-Dokumentes sind frei definierbar (daher extensible = erweiterbar) • Die XML-Definition besteht nur aus einer Basissyntax • XML-Dokumente besitzen eine hierarchische Baumstruktur Herkunft von XML • XML wurde von einer XML-Arbeitsgruppe entwickelt, die 1996 unter der Schirmherrschaft des World Wide Web Consortium (W3C) gegründet wurde. • Den Vorsitz hatte Jon Bosak von Sun Microsystems inne, unter aktiver Beteiligung einer XML Special Interest Group, die ebenfalls vom W3C organisiert wurde. Wh: Ein XML Dokument <?xml version="1.0"?> XML-Deklaration <!-- Dateiname: Inventory.xml --> Kommentar <INVENTORY> <BOOK> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>Taschenbuch</BINDING> <PAGES>336</PAGES> <PRICE>DM 12,75</PRICE> </BOOK> ... <BOOK> <TITLE>Leaves of Grass</TITLE> <AUTHOR>Walt Whitman</AUTHOR> <BINDING>Gebundene Ausgabe</BINDING> <PAGES>462</PAGES> <PRICE>DM 25,00</PRICE> </BOOK> </INVENTORY> End-Tag Start-Tag Prolog DokumentElement Im DokumentElement verschachtelte Elemente Wh: Ein XML Dokument • XML wird zur Beschreibung einer Datenbank eingesetzt • Ist für Menschen lesbar (Vorteil gegenüber anderen Formaten wie z.B. Access *.mdb) • Die Elementnamen (wie INVENTORV, BOOK oder TITLE) sind nicht Teil der XML-Spezifikation • Alle Elemente sind vollständig ineinander verschachtelt • Nur ein einziges Element auf oberster Ebene, das Dokumentenelement oder Wurzelelement genannt wird • Benennung der Elemente ist frei wählbar Wh: Die Struktur eines XML Dokuments Wh: XML Dokumente erstellen • Streng definierte Syntax • Jedes Objekt muß einen Start- und End-Tag besitzen • Jedes verschachtelte Element muß vollständig innerhalb des Elementes liegen, das es umschließt • XML-Objektnamen sind „Case-sensitive“ • Kann mit jedem Text-Editor erstellt werden • Kann mit dem Internet Explorer 5 angezeigt werden Wh: XML Dokumente anzeigen Der XML-Parser (ein Teil des XMLProzessors) analysiert das Dokument und erkennt Syntaxfehler. Wh: XML Dokumente anzeigen • Drei Möglichkeiten: – Stylesheet-Verknüpfungen Eigene Datei, die das Wiedergabeverhalten steuert – Datenbindung HTML-Elemente einer Seite an XML-Datei anbinden, dann wird durch diese HTML-Seite das XML-Dokument angezeigt – Scripts z.B. VBScripts, die das XML-Dokument lesen und darstellen Wh: Formatierung mit CSSStylesheets • display:block - Zeilenvorschub nach dem Element • margin-top:12pt - 12 Punkte Abstand vor dem Objekt • font-size:10pt - Zeichensatz 10 Punkte • font-style:italic - Kursivschrift • font-weight:bold - Schriftart fett • display:none - Element wird nicht angezeigt • margin-left:15pt - 15 Punkte Abstand nach links Wh: XML Dokumente anzeigen • Stylesheet-Verknüpfungen /* Dateiname: Inventory01.css */ <?xml version="1.0"?> BOOK {display:block; margin-top:12pt; font-size:10pt} <!-- Dateiname: Inventory01.xml --> TITLE {font-style:italic} <INVENTORY> <BOOK> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>Taschenbuch</BINDING> <PAGES>336</PAGES> <PRICE>DM 12,75</PRICE> </BOOK> ... AUTHOR {font-weight:bold} Inventory01.css <?xml-stylesheet type="text/css" href="Inventory01.css"?> Inventory01.xml Wh: XML Dokumente anzeigen /* Dateiname: Inventory02.css */ BOOK {display:block; margin-top:12pt; font-size:10pt} TITLE {display:block; font-size:12pt; font-weight:bold; font-style:italic} AUTHOR {display:block; margin-left:15pt; font-weight:bold} <?xml version="1.0"?> <!-- Dateiname: Inventory02.xml --> <?xml-stylesheet type="text/css" href="Inventory02.css"?> PRICE {display:block; margin-left:15pt} <INVENTORY> <BOOK> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>Taschenbuch</BINDING> <PAGES>336</PAGES> <PRICE>DM 12,75</PRICE> </BOOK> ... Inventory02.css Inventory02.xml BINDING {display:block; margin-left:15pt} PAGES {display:none} Wh: Wohlgeformte XML Dokumente • Besteht aus Prolog und Dokumentenelement • Zusätzlich sind auch Kommentare, Verarbeitungsanweisungen und Leerzeilen zulässig • Kommentare beginnen mit „!--“, enden mit „--“ und dürfen (natürlich) „--“ als Zeichenkette nicht enthalten • Bei Verstoß gegen Wohlgeformtheit meldet der XMLProzessor einen schwerwiegenden Fehler und die Verarbeitung wird abgebrochen • Zeichenketten im XML Markup Code werden entweder in ´oder in “ eingeschlossen – <?xml version=´1.0´?> – <?xml version=“1.0“?> Wh: Minimalistische XML Dokumente • Konform zum XML-Standard • <minimal> Ein minimalistisches Dokument </minimal> Wh: Struktur eines Elements Typ Typ <TITLE> The Adventures of Huckleberry Finn </TITLE> Start-Tag Inhalt (Zeichendaten) End-Tag • Der Typ wird auch Elementname oder „Generischer Bezeichner“, kurz GI genannt • Der Typ definiert einen bestimmten Typ oder eine Klasse von Elementen, nicht aber ein bestimmtes Element Wh: Der Elementtyp (Elementname) Typ Typ <TITLE> The Adventures of Huckleberry Finn </TITLE> Start-Tag Inhalt (Zeichendaten) End-Tag • Der Elementname kann Buchstaben, Zahlen, Punkte (.) oder Bindestriche enthalten • Der Elementname muß mit einem Buchstaben oder einem Unterstrich beginnen Wh: Leere XML Elemente • Leere Elemente können in 2 Varianten notiert werden: – <Titel></Titel> – <Titel/> • Beide Notationen sind gleichbedeutend • Übung: Inventory03.xml Wh: Attribute in XML-Dokumenten • Eine Attributsspezifikation besteht aus einem Paar „Name:Wert“ • Beispiel: <TITLE Language=“Englisch”> The Adventures of Huckleberry Finn </TITLE> <TITLE Language=“Englisch”/> • Alternative, Informationen zu einem Element hinzuzufügen • Attribute können nur mit XSL-Stylesheets, Datenbindung oder Scripts dargestellt werden Wh: Regeln für die Attributserstellung • Name muß mit einem Unterstrich oder einem Buchstaben beginnen • Folgen dürfen beliebig viele Buchstaben, Zahlen, Bindestriche, Punkte oder Unterstriche • Attribute mit dem Präfix xml (beliebige Kombination aus Groß- und Kleinbuchstaben) sind für die Standardisierung von XML reserviert • Ein bestimmter Attributname kann innerhalb eines Tags nur einmal vorkommen Weitere Regeln für die Attributserstellung • Zeichenketten können in Abostrophe (´) oder Anführungszeichen (“) eingefasst werden • Die Zeichenkette darf das Zeichen nicht enthalten, in das sie eingeschlossen ist • Desweiteren sind die Zeichen < (Beginn eines XMLMarkupcodes) und & (Anfang einer Zeichenreferenz) verboten • Wenn dennoch Anführungszeichen (“) benötigt werden, muß die Zeichenkette in Abostrophe (´) eingefasst werden Verarbeitungsanweisungen • Stellt Informationen bereit, die der XML-Prozessor an die Anwendung übergibt • Der XML-Prozessor ist das Softwaremodul, daß die Inhalte des XML-Dokumentes liest • Die Anwendung ist ein separates Modul, daß vom Prozessor den Inhalt des Dokumentes erhält und weiterverarbeitet Verarbeitungsanweisungen • Allgemeines Format für Verarbeitungsanweisungen: <? ziel anweisung ?> • ziel bezeichnet des Namen der Anwendung, an den sich die anweisung richtet • Name muß mit einem Unterstrich oder einem Buchstaben beginnen • Folgen dürfen beliebig viele Buchstaben, Zahlen, Bindestriche, Punkte oder Unterstriche Verarbeitungsanweisungen • Die genaue Menge von Anweisungen, die benutzt werden darf, hängt vom verwendeten XML-Prozessor ab • Beim IE5 sind das reservierte Standardanweisungen wie die stylesheet-Anweisung oder Anweisungen für ein Webseiten-Script, daß mit diesen Informationen umgehen und das Dokument in einer bestimmten Weise verarbeiten soll • Verarbeitungsanweisungen können an beliebiger Stelle außerhalb des MarcupCodes in ein XMLDokument eingefügt werden CDATA-Abschnitte • Wie bereits bekannt, dürfen (<) und (&) nicht in den Zeichendaten eines Objektes vorkommen • Abhilfe: Zeichenreferenzen &#60; und &#38; oder vordefinierte Entity-Referenzen &lt; (kleiner-als, lessthan) und &amp; (Ampersand, et-Zeichen) • Genauso kann (>) mit &gt; (größer-als, greater-than), (') als &apos; und (") als &quot; dargestellt werden. • Sollen jedoch mehrere solcher Zeichen eingefügt werden, ist diese Methode ziemlich „lästig“ • Einfacher: den Text mit diesen Zeichen in einen CDATA-Abschnitt aufnehmen CDATA-Abschnitte • Syntax: Ein CDATA-Abschnitt beginnt immer mit: <![CDATA[ und endet mit ]]> • Zwischen diesen Zeichengruppen können beliebige Zeichen stehen, incl. < und &, ausgenommen ]]> • Alle Zeichen innerhalb dieses Abschnitts werden als Teil der Zeichendaten des Elements, nicht als MarcupCode interpretiert CDATA-Abschnitte <?xml version="1.0"?> <!-- Dateiname: Cdata.xml --> <Austausch-Bereich> Einfache HTML-Seite <![CDATA[ <HTML> <HEAD> <TITLE>Homepage von mir</TITLE> </HEAD> <BODY> <P>Willkommen auf meiner Homepage</P> </BODY> </HTML> ]]> </Austausch-Bereich> CDATA-Abschnitte • So wird ein Austausch von HTML-Quellcode auf einfache Weise möglich CDATA-Abschnitte • Ohne CDATA-Abschnitt würde der XML-Prozessor davon ausgehen, daß es sich bei <HTML> um ein neues Element handelt • CDATA-Abschnitte dürfen überall dort eingefügt werden, wo Zeichendaten erlaubt sind • CDATA-Abschnitte können nicht verschachtelt werden • Zeichenreferenzen und vordefinierte EntityReferenzen innerhalb eines CDATA-Abschnittes werden BUCHSTÄBLICH wiedergegeben Gültige XML-Dokumente • Strengere Kriterien als wohlgeformte Dokumente (ein wohlgeformtes Dokument ist eine notwendige Bedingung für ein gültiges Dokument) • Zwei weitere Anforderungen: – Der Prolog muß eine Dokumententyp-Deklaration enthalten, die wiederum eine Dokumententyp-Definition (DTD) zur Definition der Dokumentenstruktur enthält, und – das Dokument muß der DTD entsprechen Vorteile gültige XML-Dokumente • Eine DTD stellt dem Prozessor einen standardisierten Plan zur Prüfung der gewünschten Struktur zur Verfügung • Ist ein Teil des Dokumentes nicht DTD-Konform, kann der Prozessor mit Fehlermeldungen darauf hinweisen und die Korrektur so erleichtern • Eine DTD definiert „die Grammatik einer Gruppe von Dokumenten“ Format der DTD • Eine Dokumententyp-Deklaration hat das Format <!DOCTYPE Name DTD> • Name gibt den Namen des Dokumentenelements an • DTD ist die Dokumententyp-Definition, welche die Elemente, Attribute und sonstige Eigenschaften des Dokuments definiert • DOCTYPE muß in Großbuchstaben geschrieben werden Die DTD erstellen •Eine DTD besteht aus einer linken eckigen Klammner ([), gefolgt von einer Markup-Deklaration und einer rechten eckigen Klammer (]) •Die Markup-Deklaration beschreibt die logische Struktur des Dokumentes •Beispiel: <?xml version="1.0"?> <DOCTYPE SIMPLE [ <ELEMENT SIMPLE ANY> ] > <SIMPLE>Dies ist eine extrem einfaches Dokument </SIMPLE> Eine DTD kann enthalten: • • • • • • • Elementtyp-Deklaration Attributlisten-Deklaration Entity-Deklarationen Notationsdeklarationen Verarbeitungsanweisungen Kommentare Parameter-Entity-Referenzen Elementtyp-Deklaration • Format: <ELEMENT Name inhaltsspez> • Name bezeichnet den Namen des Elementtyps • inhaltsspez definiert den zulässigen Inhalt des Elements Elementtyp-Deklaration • <ELEMENT Title (#PCDATA)> ... definiert, daß das Element Title nur Zeichendaten enthalten darf, jedoch sind untergeordnete Elemente nicht zulässig. PCDATA steht für Parsed Character Data • <ELEMENT Allgemein ANY> ... definiert, daß das Element Allgemein jede Art von Inhaltenthalten darf Elementtyp-Deklaration <?xml version="1.0"?> <DOCTYPE COLLECTION [ <ELEMENT COLLECTION (CD)+> <ELEMENT CD (#PCDATA)> <!-- Auch Kommentare sind erlaubt --> ] > < COLLECTION > <CD>BAP - Bess demnächst</CD> <CD>Rolling Stones - Voodoo Lounge</CD> </ COLLECTION > Hier wird festgelegt, daß im Element COLLECTION nur ein oder mehrere Elemente des Typs CD enthalten sein dürfen, die wiederum nur Zeichendaten enthalten dürfen Die Elementinhaltsspezifikationen • EMPTY, leeres Element • ANY, beliebiger Inhalt • Elementinhalt (auch intergeordneter Inhalt genannt), derfiniert die Elemente, die enthalten sein dürfen. Zeichendaten sind hier nicht erlaubt ! • Gemischter Inhalt, das Element kann Zeichendaten und die angegebenen Elemente enthalten Elementtyp-Deklaration <?xml version="1.0"?> <DOCTYPE BOOK [ <ELEMENT BOOK (TITLE, AUTHOR)> <ELEMENT TITLE (#PCDATA)> <ELEMENT AUTHOR (#PCDATA)> <!-- Auch Kommentare sind erlaubt --> ] > <BOOK> <TITLE>Der Herr der Ringe</TITLE> <AUTHOR>J.R.R.Tolkien</AUTHOR> </BOOK > Hier wird festgelegt, daß im Element BOOK nur je ein Element des Typs TITLE und AUTHOR enthalten darf, welche wiederum nur Zeichendaten enthalten dürfen Elementtyp-Deklaration <?xml version="1.0"?> <DOCTYPE BOOK [ <ELEMENT BOOK (TITLE, AUTHOR)> <ELEMENT TITLE (#PCDATA)> <ELEMENT AUTHOR (#PCDATA)> <!-- Auch Kommentare sind erlaubt --> ] > <BOOK> <AUTHOR>J.R.R.Tolkien</AUTHOR> <TITLE>Der Herr der Ringe</TITLE> </BOOK > Dieses Dokument ist ungültig, da die Sequenz des Inhaltsmodells (TITLE, AUTHOR) verletzt ist. Elementtyp-Deklaration <?xml version="1.0"?> <DOCTYPE BOOK [ <ELEMENT BOOK (TITLE | AUTHOR)> <ELEMENT TITLE (#PCDATA)> <ELEMENT AUTHOR (#PCDATA)> <!-- Auch Kommentare sind erlaubt --> ] > <BOOK> <TITLE>Der Herr der Ringe</TITLE> </BOOK > Dieses Dokument ist gültig, da die Auswahl des Inhaltsmodells (TITLE | AUTHOR) erfüllt ist. Elementtyp-Deklaration <?xml version="1.0"?> <DOCTYPE BOOK [ <ELEMENT BOOK (TITLE | AUTHOR)> <ELEMENT TITLE (#PCDATA)> <ELEMENT AUTHOR (#PCDATA)> <!-- Auch Kommentare sind erlaubt --> ] > <BOOK> <AUTHOR>J.R.R.Tolkien</AUTHOR> <TITLE>Der Herr der Ringe</TITLE> </BOOK > Ebenso ist dieses Dokument gültig. Elementtyp-Deklaration • Modifikationen des Inhaltsmodelles: ? + * Keines oder das vorausgehende Element notwendig (das vorausgehende Element ist optional) Eines oder mehrere der vorausgehenden Elemente notwendig Keines oder mehrere der vorausgehenden Elemente notwendig Elementtyp-Deklaration <?xml version="1.0"?> <DOCTYPE BERG [ <ELEMENT BERG (NAME+, HOEHE?)> <ELEMENT NAME (#PCDATA)> <ELEMENT HOEHE (#PCDATA)> <!-- Auch Kommentare sind erlaubt --> ] > <BERG> <NAME>Mount Everest</NAME> <NAME>Top of the World</NAME> </BERG > Dieses Dokument gültig ist. Ebenso sind weitere Kombinationen erlaubt.