Einführung XML
Gliederung
• Geschichte
• Einordnung
• Grundlagen
– XML – DTD – XSL
Geschichte
• Grundidee „generic coding“ - Trennung Information/Form
• formal definierter Dokumenttyp
• verschachtelte Strukturen
• Hypertext
Was ist XML ?
• XML = EXtensible Markup Language
• Spezifikation zur Sprachentwicklung
• entwickelt um Daten zu beschreiben
• Tags im Vergleich zu HTML nicht vordefiniert „Design“ von eigenen
• XML ist Teilmenge von SGML
• Standard ist frei und erweiterbar
Wozu XML ?
• Um Informationen zu
– strukturieren – speichern
– senden
• Datenaustausch im Web (auch B2B)
• Daten werden „nützlicher“
• zukünftiges universelles Datenformat
XML Dokument
• Im Sinne der Spezifikation
wohlgeformte Daten XML Dokument
• gültig, falls DTD vorliegt und Dokument dieser entspricht
• physikalischer Aufbau aus Entities
• logischer Aufbau aus Deklarationen, Elementen, Kommentaren, ...
XML Syntax
• Ein Beispiel
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML Elemente
• Erweiterbar und in Beziehung untereinander
• XML Element = alles zwischen Start- und Endtag inklusive dieser
• Namensregeln
– Buchstaben, Zahlen und andere Zeichen – nicht Zahl, „_“ bzw. „xml“ am Anfang
– keine Leerzeichen
XML Attribute
• Im Starttag (z.B.: <note date="12/11/99">)
• eingeschlossen zwischen ‚‘ oder „“
• Elemente oder Attribute ?
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
oder
<sex>female</sex>
XML Namespaces
• Elementnamenkonflikte vermeiden
• Präfix (kein Namespace)
<prefix:element>
• Namespace
<element xmlns:namespace-prefix="namespace">
• alternative: Default Namespace
<element xmlns="namespace">
• Attributwert "namespace" sollte URI sein
XML PCDATA und CDATA
• XML Parser behandeln alle Daten außer CDATA-Blöcke als PCDATA
• ungültige Zeichen „<“ und „&“
• Zeichenersetzungen:
< < less than > > greater than
& & ampersand ' ' apostrophe
" " quotation mark
• CDATA Abschnitt: <![CDATA[ ... ]]>
Was fehlt ?
• Kommentare <!-- ... -->
• Processing Instructions <? ... ?>
• leere Elemente (2 Varianten)
<img src="foto.jpg"/>
<img src="foto.jpg"></img>
• Multimedia (in DTD definiert)
<!ENTITY bild SYSTEM "foto.jpg" NDATA JPEG>
• als Instanz verwendet: &bild;
Was ist eine DTD ?
• Document Type Definition
• beschreibt XML Struktur
XML-Dokument gültig ?
• 2 Möglichkeiten diese einzubinden
– interne DOCTYPE Deklaration
<!DOCTYPE root-element [element-declarations]>
– externe DOCTYPE Deklaration
<!DOCTYPE root-element SYSTEM "filename">
Wozu eine DTD ?
• XML auch ohne DTD möglich
• Vorteile der DTD
– Gültigkeitsprüfung (Struktur)
• eigene Daten
• fremde Daten (aus Web ?)
– Beschreibung zur XML wird mitgeliefert – einfacherer Datenaustausch
DTD Beispiel (intern)
<?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>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
DTD Beispiel (extern)
• Externe DTD zu XML Beispiel (note)
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
• Einbindung in note.xml
<!DOCTYPE note SYSTEM "note.dtd">
DTD Elemente (1)
• Sequenz-Operator
<!ELEMENT element-name (child1,child2)>
• Oder-Operator
<!ELEMENT element-name (child1|child2)>
• optionales Element (child?)
• mindestens ein Vorkommen (child+)
• beliebig oft (child*)
• nur Text <!ELEMENT element-name (#PCDATA)>
DTD Elemente (2)
• Gemischter Inhalt
<!ELEMENT element-name (#PCDATA|child)*>
• 2 reservierte Schlüsselwörter
– ANY
<!ELEMENT element-name ANY>
– EMPTY
<!ELEMENT element-name EMPTY>
DTD Attribute (1)
• mit !ATTLIST definiert (Default)
<!ATTLIST ename aname atype adefault-value>
e = element a = attribute
• Beispiel
<!ELEMENT payment (#PCDATA)>
<!ATTLIST payment type CDATA "check">
• Anwendung in XML
<payment type="check">100 €</payment>
DTD Attribute (2)
• nicht explizit benötigt (implied)
<!ATTLIST ename aname atype #IMPLIED>
• notwendig (required)
<!ATTLIST ename aname atype #REQIRED>
• festgelegt (fixed)
<!ATTLIST ename aname atype #FIXED default>
• Auswahlliste
<!ATTLIST ename aname (en1|en2|...) default>
DTD Entities
• Variablen
• in XML gültig
• Deklaration
– intern
<!ENTITY entity-name "entity-value">
– extern
<!ENTITY entity-name SYSTEM "URI/URL">
• in XML: &entity-name;
DTD PEReference
• Parameter Entity Reference
• innerhalb DTD
• Deklaration
– intern
<!ENTITY % entity-name "entity-value">
– extern
<!ENTITY % entity-name SYSTEM "URI/URL">
• in DTD: %entity-name;
DTD Notation
• Definition von z.B. Grafikformaten
• Entity
<!ENTITY bild SYSTEM "foto.jpg" NDATA JPEG>
• zugehörige Notation
<!NOTATION JPEG PUBLIC
"ISO/IEC 10918:1993//NOTATION Digital
Compression and Coding of Continuous-tone Still Images (JPEG)//EN">
<!--Internationaler JPEG-Standard-->
Was ist XSL ?
• eXtensible Stylesheet Language
• Stylesheet Sprache für XML
• ausgeklügelter als CSS
• aber auch CSS verwendbar
• 3 Teile
– XSLT, Xpath, XSL Formatting Objects – größte Bedeutung XSLT
Quellen
• World Wide Web Consortium (W3C)
(http://www.w3.org)
• W3Schools
(http://www.w3schools.com)
• XML in der Praxis (Henning Behme, Stefan Minert)
(http://www.mintert.com/xml/buch)