XML Grundaufbau
-
Upload
jens-kaesbauer -
Category
Documents
-
view
8.956 -
download
2
description
Transcript of XML Grundaufbau
XML GrundaufbauDMD12D
Jens Käsbauer (www.jenskaesbauer.de)
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.
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.
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.
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.
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.
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!
•
•
•
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“>
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.
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.
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)*)>
•
•
•
•
•
•
•
•
•
•
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>
•
•
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
•
•
•
•
•
•
•
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
•
•
•
•
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
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>
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)
XML Grundaufbau
www.jenskaesbauer.deXMLXMLXML
Vielen Dank
Vielen Dank für Eure Aufmerksamkeit!