XML-Einführung 2

Werbung
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 < und & oder
vordefinierte Entity-Referenzen < (kleiner-als, lessthan) und & (Ampersand, et-Zeichen)
• Genauso kann (>) mit > (größer-als, greater-than),
(') als ' und (") als " 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.
Herunterladen