Sie sind auf Seite 1von 7

XML (eXtensible Makup Language)

Allgemein XML-Dokumente erfllen verschiedene Grade von Korrektheit: XML-Dokumente sind entweder wellformed (wohlgeformt) oder valid (gltig). wellformed: wohlgeformte XML-Dokumente wellformed Wellformed ist ein Dokument dann, wenn jeder Tag einen Abschluss hat und wenn hierarchisch ineinander verschachtelte Tags sich nicht berlappen: ein Tag, der innerhalb eines anderen geffnet wird, muss auch innerhalb wieder geschlossen werden. valid valid ist ein Dokument dann, wenn es wellformed ist und eine Dokument Type Definition (DTD) besitzt. Diese definiert die Struktur der erlaubten Tags. Struktur Prolog <?xml version=1.0 encoding = UTF-8?> (Gibt Version / Codierung an) Prolog Definition Body Mindestens ein root Element. Keine Verschachtelten Elemente XML ist case Sensitive Attribute mssen immer in geschrieben werden (siehe Prolog)(Vermeiden von zu vielen da sie nicht gut erweiterbar sind) Es gibt keine ungeschlossenen Elemente ( <br> = falsch / <br />)

Kommentare <!-- Kommentar --> Sonderzeichen die ersetzt werden mssen &lt; &gt; &amp; &apos; &quot; Beispiel <?xml version="1.0" encoding="ISO-8859-1"?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </CATALOG> Version 1.0 XML/DTD/XML-Shema Seite 1 < > & ' " less than greater than ampersand apostrophe quotation mark

DTD (Document Type Definition)


Allgemein Gibt Struktur eines Dokumentes an Case Sensitiv Genau aufgebaut wie Wurzelelement Name Definition muss mit Name des Wurzelelementes bereinstimmen

Beschreibung Element A? A+ A* A|B A,B (A,B)? #PCDATA Attribute #REQUIRED #IMPLIED #FIXED (a|b|c) CDATA Muss vorhanden sein Ist optional Attributwert ist fest vergeben Aufzhlung von Werten Irgendein Ausdruck Element A kommt optional vor Element A kommt 1 oder mehrmals vor Element A kommt 0 oder mehrmals vor Element A oder B Element A gefolgt von B Optional (A & B) Eine Beliebige Zeichenkette (je nach Kodierung)

Beispiele ext <!DOCTYPE EMail SYSTEM "../src/email.dtd"> int <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> </note>

Namensrume <?xml version="1.0" encoding="ISO-8859-1" ?> <bestellung xmlns:produkt="http://localhost/XML/produkt" xmlns:kunde="http://localhost/XML/kunde"> <produkt:nummer>p49393</produkt:nummer> <produkt:name>JXY Rasierer VC100</produkt:name> <produkt:menge>1</produkt:menge> <produkt:preis>69,--</produkt:preis> <kunde:nummer>k2029</kunde:nummer> <kunde:name>Meier, Fritz</kunde:name> <kunde:lieferadresse>Donnerbalkenstr.14, 80111 Mnchen</kunde:lieferadresse> </bestellung> Version 1.0 XML/DTD/XML-Shema Seite 2

Erluterung:
In dem Beispiel geht es um die Datenstruktur einer Bestellung. Eine typische Bestellung greift auf zwei verschiedene Datenbestnde zu: fr das bestellte Produkt auf den Produktdatenbestand, und fr den Besteller auf den Kundendatenbestand. Dies kommt im Beispiel dadurch zum Ausdruck, dass im einleitenden Tag des Elements bestellung zwei Namensraumdeklarationen stehen: eine fr produkt und eine fr kunde. Zwischen <bestellung> und </bestellung> soll mit Elementen aus beiden Namensrumen gearbeitet werden knnen. Dazu werden bei den Namensraumdeklarationen Prfixe mit definiert. Anstelle eines reinen Attributs xmlns wird hier xmlns:produkt und xmlns:kunde notiert, also xmlns, gefolgt von einem Doppelpunkt und einem Namen (alles ohne Leerzeichen dazwischen). Die Namen wie im Beispiel produkt und kunde sind dabei frei whlbar. Als Wertzuweisung an das so definierte Attribut folgt ein per Konvention vergebener URI. Im Beispiel werden http://localhost/XML/produkt und http://localhost/XML/kunde gewhlt. Bei den Elementen, die innerhalb von <bestellung> und </bestellung> vorkommen, wird durch Angabe der definierten Prfixnamen auf den gewnschten Namensraum Bezug genommen. produkt:nummer nimmt beispielsweise auf den Namensraum Bezug, der mit xmlns:produkt="http://localhost/XML/produkt" definiert wurde, whrend kunde:nummer auf den Namensraum Bezug nimmt, der mit xmlns:kunde="http://localhost/XML/kunde" definiert wurde.

Version 1.0

XML/DTD/XML-Shema

Seite 3

XML Shema
Einbinden in der XML <?xml-stylesheet type="text/xsl" href="simple.xsl"?> Prolog Shema <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns=http://www.w3schools.com elementFormDefault="qualified"> ... </xs:schema>

Datentypen xs:string xs:decimal xs:integer xs:boolean xs:date xs:time

Einfaches Element (Simple Element) <xs:element name="www" type="xxx" [default="yyy"/] fixed="zzz" use="required/optional"> Beschrnkungen <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> (beim Datentyp String werden die Werte ber <xs:enumeration value="xxx"/> beschrnkt) (erlaubte Zeichen/Muster) <xs:restriction base="xs:string"> <xs:pattern value="***"/> </xs:restriction> *** [a-z] [A-Z] [0-9] [a-zA-Z] [a-zA-Z0-9] [a-z][a-z] [usw] ([a-z])* [a-z][A-Z])+ male|female [a-zA-Z0-9]{8}

Nur Kleinbuchstaben Nur Grobuchstaben Nur Zahlen Klein-/Grobuchstaben Buchstaben/Zahlen 2 Kleinbuchstaben Nur die Buchstaben u/s/w Nur Kleinbuchstaben Beliebig viele Kombinationen von kl. und gro Buchstaben (z.B. sTaRtE) Nur die Strings male/female 8 Buchstaben/Zahlen

1Z 1Z 1Z 1Z 1Z 2Z 1Z 0-u Z 1- u Z ----------8Z

Es werden auch Regulre Ausdrcke untersttzt!!! Version 1.0 XML/DTD/XML-Shema Seite 4

Lngenbeschrnkung <xs:minLength value="x"/> <xs:maxLength value="y"/> <xs:length value="z"/> Das Komplexe Element <xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> Komplexe Elemente knnen geschachtelt werden! Attribute <xs:attribute name="xxx" type="yyy"/> Datentypen xs:string xs:decimal xs:integer xs:boolean xs:date xs:time

All Indicator Die Reihenfolge der XML kann variieren. Jeder Child darf nur ein mal vorkommen. <xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element> Choice Indicator Es kann nur ein Child der beiden existieren <xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element>

Version 1.0

XML/DTD/XML-Shema

Seite 5

Sequence Indicator Die Child Elemente mssen in der vorgegebenen Reihenfolge existieren <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element> minOccurs/maxOccurs Indicator min-/maximale Anzahl in der ein das/die Elemente erscheinen. <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <any> Element Ermglicht nachtrgliche Erweiterung <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:any minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> i Bsp Erweiterung <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xs:element name="children"> <xs:complexType> <xs:sequence> <xs:element name="childname" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Version 1.0

XML/DTD/XML-Shema

Seite 6

Endgltige XML <?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns="http://www.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd http://www.w3schools.com children.xsd"> <person> <firstname>Hege</firstname> <lastname>Refsnes</lastname> <children> <childname>Cecilie</childname> </children> </person> <person> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons>

Beispiel <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Version 1.0

XML/DTD/XML-Shema

Seite 7