Sie sind auf Seite 1von 18

XML Grundaufbau

DMD12D Jens Ksbauer (www.jenskaesbauer.de)

XML

Grundaufbau

Auszeichnungssprache

Die Buchstabenfolge XML ist ein Akronym der Worte Extensible Markup Language, was ins Deutsche bersetzt nichts anderes heist, als erweiterbare Auszeichnungssprache. Eine Auszeichnungssprache dient zur Beschreibung des Inhalts eines Dokuments. Ursprnglich dienten die Auszeichnungen im Text als Anweisungen fr die Setzer im Drucksatz.

XML
www.jenskaesbauer.de

XML

Grundaufbau
Herkunft

SGML
HTML

Standard Generalized Markup Language

XML
XHTML

XML wurde 1989 als Vereinfachung von SGML zum ersten mal als eigenstndige Spezikation verffentlicht. Aufgrund der Flexibilitt von XML bildete sich schnell eine Vielzahl an Derivaten. Spter wurde versucht mit XHTML eine Zusammenfhrung von HTML und XML fr ein barrierefreieres Internet zu erreichen. Dies hat sich jedoch nie richtig durchgesetzt.

XML
www.jenskaesbauer.de

SVG X3D OSM SMIL AutomationML XML Encryption ...

XML

Grundaufbau

Aufgaben / Grundgedanke / Vorteil

Hauptaufgaben

- Darstellung hierarchisch strukturierter Daten. - Ermglichen des plattform- und implementationsunabhngigen Austausches von Daten.

Grundgedanke Vorteile

- Daten sollen strikt losgelst von deren Prsentation gespeichert werden.

- Nur ein Datenbestand, viele Prsentationsmglichkeiten. - Plattform- und Softwareunabhngig. - Flexibilitt fr nahezu jedes Einsatzgebiet.

XML
www.jenskaesbauer.de

XML

Grundaufbau

XML - Baumstruktur I

Adressdaten
Theo, Loge, Gottesacker, 23, 08156, St. Gotthard, Schweiz Otto, Normal, Rudolf-Diesel-Weg, 23, 04711, Toyo, Japan ...

liegen oftmals in wenig strukturierter Form vor. Da sich die Art der einzelnen Daten in jedem Datensatz jedoch wiederholt kann man sich eine einfache Baumstruktur bauen:
Adressdaten | Kunde | | |

Vorname Name Adresse | | | | |

Strae Hausnummer Postleitzahl Ort Land

XML
www.jenskaesbauer.de

Immer wiederkehrende Datenstze bilden die Basis fr unsere Baumstruktur. Wenn man das Prinzip dahinter einmal verstanden hat, dann ist es auch ein Leichtes daraus eine XML Datei zu erstellen.

XML

Grundaufbau

XML - Baumstruktur II

Adressdaten | Kunde | | |

<Adressdaten> <Kunde> Vorname Name Adresse | | | | | <Vorname>Theo</Vorname> <Name>Loge</Name> <Adresse> Strae Hausnummer Postleitzahl Ort Land <Strae>Gottesacker</Strae> <Hausnummer>23</Hausnummer> <Postleitzahl>08156</Postleitzahl> <Ort>St. Gotthard</Ort> <Land>Schweiz</Land>

</Adresse> Die Baumstruktur und die Struktur eines XML Dokuments h</Kunde> neln sich stark. Wenn man die einem vorliegenden Daten ein- </Adressdaten> mal in eine Baumstruktur gebracht hat, ist es bis zur fertigen XML Struktur nicht mehr weit.

XML
www.jenskaesbauer.de

XML

Grundaufbau

Wohlgeformtheit und Validitt

Um ein wohlgeformtes XML-Dokument zu bekommen, muss man bestimmte Regeln einhalten:


Das Dokument besitzt genau ein Wurzelelement. vgl. <html> - Tag in XHTML Alle Elemente mssen durch ein Beginn- und End-Tag deniert sein. zb. <vorname>Vorname1</vorname> Die Elemente mssen von innen nach auen geschlossen werden. Das bedeutet, dass der End-Tag des innersten Elements vor dem des darberliegenden Elternelements liegen muss. Dies gilt bis zum schlieen des Root-Elements. Ein Element darf nicht mehrere Attribute mit dem gleichen Namen enthalten. Ein Attribut deniert ein Element nher, weshalb eine Mehrfachnennung eines Attributs nicht zulssig ist.

Ein XML-Dokument ist laut der Spezikation des W3C dann gltig (valide), wenn es
wohlgeformt ist, einen Verweis auf eine DTD oder XML Schema hat UND sich an die Anweisungen der DTD hlt!

XML
www.jenskaesbauer.de

XML

Grundaufbau
Syntax I

Prolog: <?xml version=1.0 encoding=UTF-8 standalone=no ?> Denition des Stylesheets: <?xml-stylesheet href=beispiel.css type=text/css?> Interne DTD oder Verweis auf die externe DTD: <!DOCTYPE test [ <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT ... ]> oder <!DOCTYPE test SYSTEM test.dtd>

test1 testA testB testC

(testA, testB, testC)> (#PCDATA)> (#PCDATA)> (#PCDATA)>

XML
www.jenskaesbauer.de

XML

Grundaufbau
Syntax II

Wurzelelement ffnen: <test1> Unterelemente: <testA>Inhalt</testA> <testB></testB> <testC /> Wurzelelement schlieen: </test1> (Element mit Inhalt) (Leeres Element Version 1) (Leeres Element Version 2)

XML hat eine sehr einfache Syntax, was es natrlichermaen unheimlich exibel und fr viele Bereiche Interessant macht. Dafr ist die Erstellung der DTD umso komplexer und aufwndiger.

XML
www.jenskaesbauer.de

XML

Grundaufbau

Document Type Denition I Grundlagen

Um ein XML-Dokument validieren zu knnen bedarf es einer DTD. Diese kann, wie vorne im Text bereits beschrieben, entweder im Text, oder ausgelagert in einer zweiten Datei angegeben werden. Eine externe DTD wird im Endeffekt wie eine XML-Datei beschrieben. Es fehlen lediglich die tatschlichen XML-Daten: <?xml version=1.0 encoding=UTF-8?> <!DOCTYPE test [ <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT ... ]>

test1 testA testB testC

((testA+), testB, testC)> (#PCDATA)> (#PCDATA)> (#PCDATA)>

Eine interne DTD sieht genauso aus. Sie wird an der Stelle eingefgt, an der in der XML - Datei der Verweis auf die externe DTD stehen wrde, also zwischen Prolog und dem Wurzelelement der XML-Baumstruktur. Auf die erste Zeile der externen DTD wird dann allerdings verzichtet.

XML
www.jenskaesbauer.de

XML

Grundaufbau

Document Type Denition II Regeln

Wichtige Regeln fr die Erstellung einer DTD


Schlsselwrter (z.B. ELEMENT) mssen gro geschrieben werden. Der Name eines Elements kann frei gewhlt werden. Er muss in den XML-Daten aber genauso geschrieben werden, wie in der DTD. Ausnahme: Elemente drfen nicht mit xml oder Zahlen beginnen, oder Leerzeichen enthalten. Soll ein Element weitere Unterelemente enthalten, so schreibt man die erlaubten Tags in runde Klammern nach dem Namen des Hauptelements. <!ELEMENT test1 (a,b,c)> Das , als Trennzeichen gibt dann an, das jedes der Unterelemente angegeben werden muss. Will man die Wahl haben, welches Element angegeben werden soll, so tauscht man das , durch einen | aus. Fr diese Unterelemente gelten die gleichen Regeln, wie auch fr die Hauptelemente. Fr jedes Element gilt, sofern nicht weiteres angegeben wird, dass es mindestens einmal im XML-Dokument vorkommen muss. Will man dies variieren kann man dies mit den Zeichen ?, + und *. Fgt man ein ? an den Unterelement-Namen an, so wird dieses Unterelement optional.

Fgt man ein * an den Unterelement-Namen an, so kann dieses Unterelement beliebig oft angegeben werden.

Fgt man ein + an, so muss dieses Unterelement mindestens einmal im bergeordneten Element eingebunden werden.

Die Zusatzzeichen knnen auch innerhalb eines Elements, welches weitere Unterelemente enthalten soll kombiniert werden: <!ELEMENT test1 (sub_test1?,(sub_test2|sub_test3)*)>

XML
www.jenskaesbauer.de

XML

Grundaufbau

Document Type Denition III Regeln und Attribute

Wichtige Regeln fr die Erstellung einer DTD


Leere Elemente werden mit dem Schlsselwort EMPTY gekennzeichnet. <!ELEMENT test1 EMPTY> Elemente mit beliebigem Inhalte werden mit dem Schlsselwort ANY gekennzeichnet. <!ELEMENT test2 ANY>

Attribute
Attribute knnen entweder direkt als Attribut eines Elements, oder als Attributslisten, hnlich einer Auswahlliste, angegeben werden: Attribut eines Elements: <!ELEMENT test1 #PCDATA defaultwert>

Attributsliste: <!ATTLIST element_name attribut_name typ default_wert>

XML
www.jenskaesbauer.de

XML

Grundaufbau

Document Type Denition IV Attributtypen

Attributtypen
Der Vollstndigkeit halber sind hier die mglichen Attributtypen und deren Bedeutung aufgefhrt: CDATA = Beliebiger Text ID = Ein eindeutiger XML Bezeichner (muss mit Buchstabe, Unterstrich oder Doppelpunkt beginnen) IDREF = Ein Bezug auf eine im Dokument vorkommende ID (darf fter vorkommen) IDREFS = Mehrere durch Leerschritte getrente IDREF-Bezeichner ENTITY = Name einer in der DTD denierten unparsed Entity ENTITIES = Mehrere, durch Leerschritte getrennte, Unparsed Entity Namen NMTOKEN = Ein Namens-Token. Erlaubte Zeichen: A..Z, a..z, 0..9, Punkt, Bindestrich, Underscore, Doppelpunkt, Mittelpunkt NMTOKENS = Mehrere durch Leerschritte getrennte NMTOKEN (enumeration) = Durch |-Symbole getrennte NMTOKEN, in runde Klammern gesetzt

NOTATION = Durch |-Symbole getrennte Aufzhlung von in der DTD deklarierten Notations-Namen. Diese Notationen werden benutzt, um den Inhalt des Elements zu interpretieren.

XML
www.jenskaesbauer.de

XML

Grundaufbau

Document Type Denition V Defaultwerte

Defaultwerte von Elementen


Bei XML kann man Elemente bereits mit Werten vorbelegen. Dies kann man zum Beispiel machen, wenn man weis, das ein bestimmtes Element im Regelfall immer den selben Wert hat und nur in Ausnahmefllen mal einen anderen. Damit kann man sich die sptere Arbeit im XML-Dokument erleichtern. Folgende mgliche Defaultwerte gibt es in XML: defaultwert = Hier wird innerhalb der Hochkommas einfach der gewnschte Wert eingegeben. Fehlt das Attribut spter innerhalb des Tags wird einfach der Standart-Wert angenommen und vom Parser verwendet. #REQUIRED = Dieses Attribut muss auf jeden Fall angegeben werden, wenn es fehlt, ist das Dokument nicht mehr valide! #IMPLIED = Dieses Attribut ist optional und wird von der Anwendung deniert. Fehlt es in der XML Datei wird es entweder von der Anwendung deniert, oder leer gelassen. #FIXED defaultwert = Es darf nur der in Hochkommas angegebene Wert auich spter im Tag angegeben werden. Fehlt dieses Attribut wird der defaultwert verwendet. Wird im Tag ein anderer Wert eingegeben ist das Dokument nicht mehr valide.

XML
www.jenskaesbauer.de

XML

Grundaufbau

Document Type Denition VI Beispiel Personenliste

Ein komplettes Beispiel


Am besten versteht man die Verwendung einer DTD wohl mit einem Beispiel, welches die trockene Theorie gleich mit einer praktischen Anwendung verbinden kann: Die externe DTD mit dem Namen person.dtd <?xml version=1.0 encoding=UTF-8?> <!DOCTYPE PersListe [ <!ELEMENT PersListe (PERSON)+> <!ELEMENT PERSON ((VORNAME+), NACHNAME, ADRESSE)> <!ATTLIST PERSON geschlecht (m|w) #REQUIRED> <!ELEMENT VORNAME #PCDATA> <!ELEMENT NACHNAME #PCDATA> <!ELEMENT ADRESSE (STRASSE, HAUSNUMMER, PLZ, ORT)> <!ELEMENT STRASSE #PCDATA> <!ELEMENT HAUSNUMMER #PCDATA> <!ELEMENT PLZ #PCDATA> <!ELEMENT ORT #PCDATA> ]>

XML
www.jenskaesbauer.de

XML

Grundaufbau

Document Type Denition VII Beispiel Personenliste

Die XML-Datei mit dem Namen personenliste.xml <?xml version=1.0 encoding=UTF-8?> <!DOCTYPE PersListe SYSTEM person.dtd> <PersListe> <PERSON geschlecht=m> <VORNAME>Hans</VORNAME> <VORNAME>Peter</VORNAME> <VORNAME>Egon</VORNAME> <NACHNAME>Mustermann</NACHNAME> <ADRESSE> <STRASSE>Mustergasse</STRASSE> <HAUSNUMMER>1</HAUSNUMMER> <PLZ>0815</PLZ> <ORT>Musterstadt</ORT> </ADRESSE> </PERSON> <PERSON geschlecht=w> <VORNAME>Erika</VORNAME> <NACHNAME>Mustermann</NACHNAME> <ADRESSE> <STRASSE>Mustergasse</STRASSE> <HAUSNUMMER>1</HAUSNUMMER> <PLZ>0815</PLZ> <ORT>Musterstadt</ORT> </ADRESSE> </PERSON> </PersListe>

XML
www.jenskaesbauer.de

XML

Grundaufbau

weiterfhrende Informationen

Weitere Informationen rund um das Thema XML ndet ihr auf den folgenden Websiten, auf denen wir uns viel Wissen rund um dieses Thema zusammengesammelt haben. Diese Zusammenstellung erhebt keinen Anspruch auf vollstndigkeit und soll bestenfalls Ausgangspunkte fr die weitere Recherche liefern.

http://de.wikipedia.org/wiki/Extensible_Markup_Language (de) http://de.selfhtml.org/xml/ (de) http://www.selfxml.de/ (de) http://www.w3.org/XML/ (en) http://www.xml.com/ (en)

XML
www.jenskaesbauer.de

XML

Grundaufbau
Vielen Dank

Vielen Dank fr Eure Aufmerksamkeit!

XML
www.jenskaesbauer.de