XML Grundaufbau

18
XML Grundaufbau DMD12D Jens Käsbauer (www.jenskaesbauer.de)

description

Beschreibung des Grundaufbaus von xml Dateien. Erstellt für die Mediengestalter Abschlussprüfung 2011.

Transcript of XML Grundaufbau

Page 1: XML Grundaufbau

XML GrundaufbauDMD12D

Jens Käsbauer (www.jenskaesbauer.de)

Page 2: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Eine Auszeichnungssprache dient zur Beschreibung des Inhalts eines Dokuments. Ursprünglich dienten die Auszeichnungen im Text als Anweisungen für die Setzer im Drucksatz.

Auszeichnungssprache

Die Buchstabenfolge XML ist ein Akronym der Worte Extensible Markup Language, was ins Deutsche übersetzt nichts ande-res heist, als erweiterbare Auszeichnungssprache.

Page 3: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Herkunft

SGML Standard Generalized Markup Language

HTML XML

XHTML

SVGX3DOSMSMILAutomationMLXML Encryption...

XML wurde 1989 als Vereinfachung von SGML zum ersten mal als eigenständige Spezifi kation veröffentlicht. Aufgrund der Fle-xibilität von XML bildete sich schnell eine Vielzahl an Derivaten.

Später wurde versucht mit XHTML eine Zusammenfüh-rung von HTML und XML für ein barrierefreieres Internet zu erreichen. Dies hat sich jedoch nie richtig durchgesetzt.

Page 4: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Aufgaben / Grundgedanke / Vorteil

Hauptaufgaben- Darstellung hierarchisch strukturierter Daten.- Ermöglichen des plattform- und implementationsunabhängigen Austausches von Daten.

Grundgedanke- Daten sollen strikt losgelöst von deren Präsentation gespeichert werden.

Vorteile- Nur ein Datenbestand, viele Präsentationsmöglichkeiten.- Plattform- und Softwareunabhängig.- Flexibilität für nahezu jedes Einsatzgebiet.

Page 5: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

XML - Baumstruktur I

Adressdaten

Theo, Loge, Gottesacker, 23, 08156, St. Gotthard, SchweizOtto, 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 | → Straße | → Hausnummer | → Postleitzahl | → Ort | → Land

Immer wiederkehrende Datensätze bilden die Ba-sis für unsere Baumstruktur. Wenn man das Prinzip dahinter einmal verstanden hat, dann ist es auch ein Leichtes daraus eine XML Datei zu erstellen.

Page 6: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

XML - Baumstruktur II

Adressdaten | → Kunde | → Vorname | → Name | → Adresse | → Straße | → Hausnummer | → Postleitzahl | → Ort | → Land

<Adressdaten>

<Kunde>

<Vorname>Theo</Vorname>

<Name>Loge</Name>

<Adresse>

<Straße>Gottesacker</Straße>

<Hausnummer>23</Hausnummer>

<Postleitzahl>08156</Postleitzahl>

<Ort>St. Gotthard</Ort>

<Land>Schweiz</Land>

</Adresse> </Kunde></Adressdaten>

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

Page 7: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Wohlgeformtheit und Validität

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 müssen durch ein Beginn- und End-Tag defi niert sein. zb. <vorname>Vorname1</vorname>

Die Elemente müssen von innen nach außen geschlossen werden. Das bedeutet, dass der End-Tag des inners-ten Elements vor dem des darüberliegenden Elternelements liegen muss. Dies gilt bis zum schließen des Root-Elements.

Ein Element darf nicht mehrere Attribute mit dem gleichen Namen enthalten. Ein Attribut defi niert ein Ele-ment näher, weshalb eine Mehrfachnennung eines Attributs nicht zulässig ist.

Ein XML-Dokument ist laut der Spezifi kation des W3C dann gültig (valide), wenn es

wohlgeformt ist,

einen Verweis auf eine DTD oder XML Schema hat

UND sich an die Anweisungen der DTD hält!

Page 8: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Syntax I

Prolog: <?xml version=“1.0“ encoding=“UTF-8“ standalone=”no” ?>

Defi nition des Stylesheets: <?xml-stylesheet href=“beispiel.css“ type=“text/css“?>

Interne DTD oder Verweis auf die externe DTD: <!DOCTYPE test [ <!ELEMENT test1 (testA, testB, testC)> <!ELEMENT testA (#PCDATA)> <!ELEMENT testB (#PCDATA)> <!ELEMENT testC (#PCDATA)> ... ]>

oder

<!DOCTYPE test SYSTEM “test.dtd“>

Page 9: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Syntax II

Wurzelelement öffnen: <test1>

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

Wurzelelement schließen: </test1>

XML hat eine sehr einfache Syntax, was es natürlichermaßen unheimlich fl exibel und für viele Bereiche Interessant macht.

Dafür ist die Erstellung der DTD umso komplexer und aufwän-diger.

Page 10: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Document Type Defi nition I – Grundlagen

Um ein XML-Dokument validieren zu können bedarf es einer DTD. Diese kann, wie vorne im Text bereits beschrieben, entwe-der 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 tatsächlichen XML-Daten:

<?xml version=“1.0“ encoding=“UTF-8“?>

<!DOCTYPE test [ <!ELEMENT test1 ((testA+), testB, testC)> <!ELEMENT testA (#PCDATA)> <!ELEMENT testB (#PCDATA)> <!ELEMENT testC (#PCDATA)> ... ]>

Eine interne DTD sieht genauso aus. Sie wird an der Stelle ein-gefügt, an der in der XML - Datei der Verweis auf die externe DTD stehen würde, also zwischen Prolog und dem Wurzelele-ment der XML-Baumstruktur. Auf die erste Zeile der externen DTD wird dann allerdings verzichtet.

Page 11: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Document Type Defi nition II – Regeln

Wichtige Regeln für die Erstellung einer DTD

Schlüsselwörter (z.B. ELEMENT) müssen groß geschrieben werden.

Der Name eines Elements kann frei gewählt werden. Er muss in den XML-Daten aber genauso geschrieben werden, wie in der DTD. Ausnahme: Elemente dürfen 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.

Für diese Unterelemente gelten die gleichen Regeln, wie auch für die Hauptelemente.

Für 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 „*“.

Fügt man ein ? an den Unterelement-Namen an, so wird dieses Unterelement optional.

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

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

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

Page 12: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Document Type Defi nition III – Regeln und Attribute

Wichtige Regeln für die Erstellung einer DTD

Leere Elemente werden mit dem Schlüsselwort EMPTY gekennzeichnet. <!ELEMENT test1 EMPTY>

Elemente mit beliebigem Inhalte werden mit dem Schlüsselwort ANY gekennzeichnet. <!ELEMENT test2 ANY>

Attribute

Attribute können 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>

Page 13: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Der Vollständigkeit halber sind hier die möglichen Attributtypen und deren Bedeutung aufgeführt:

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 defi nierten 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, Doppel- punkt, Mittelpunkt

NMTOKENS = Mehrere durch Leerschritte getrennte NMTOKEN (enumeration) = Durch |-Symbole getrennte NMTOKEN, in runde Klammern gesetzt

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

Document Type Defi nition IV – Attributtypen

Attributtypen

Page 14: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

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 Ausnahmefällen mal einen anderen. Damit kann man sich die spätere Arbeit im XML-Dokument erleichtern. Folgende mögliche Defaultwerte gibt es in XML:

‘defaultwert’ = Hier wird innerhalb der Hochkommas einfach der gewünschte Wert eingegeben. Fehlt das Attribut später 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 defi niert. Fehlt es in der XML Datei wird es entweder von der Anwendung defi niert, oder leer gelassen.

#FIXED ‘defaultwert’ = Es darf nur der in Hochkommas angegebene Wert auich später im Tag angegeben werden. Fehlt dieses Attribut wird der defaultwert verwendet. Wird im Tag ein anderer Wert eingegeben ist das Dokument nicht mehr valide.

Document Type Defi nition V – Defaultwerte

Defaultwerte von Elementen

Page 15: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Document Type Defi nition VI – Beispiel „Personenliste“

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> ]>

Ein komplettes Beispiel

Page 16: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Document Type Defi nition 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>

Page 17: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

weiterführende Informationen

Weitere Informationen rund um das Thema XML fi ndet ihr auf den folgenden Websiten, auf denen wir uns viel Wissen rund um dieses Thema zusammengesammelt haben. Diese Zusammenstellung erhebt keinen Anspruch auf vollständigkeit und soll bestenfalls Ausgangspunkte für 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)

Page 18: XML Grundaufbau

XML Grundaufbau

www.jenskaesbauer.deXMLXMLXML

Vielen Dank

Vielen Dank für Eure Aufmerksamkeit!