You are on page 1of 66

Web E i W b Engineering i

Teil 4: XML und Co

DHBW Stuttgart Campus Horb Fakultt Technik Studiengang AI, 3.Semester Dozent: Antonius van Hoof

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

XML, (X)HTML und SGML I Ursprung aller dieser Sprachen: SGML Standard Generalised Markup Language, ISO 8879:1986, entwickelt von Charles Goldfarb (IBM) Zentral: Trennung von Inhalt, Struktur und Layout
SGML: DTD: DSSSL: Markup des Inhalts Document Type Definition, Definition der Struktur eines Dokuments Document Style Semantics and Specification Language, ISO/IEC 10179:1996, Layout Definition
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

HTML, HyperText Markup Language ist im strikten Sinne eine DTD (<!DOCTYPE> Statement), die die SGMLMarkup fr Hypertextdokumente festlegt M k f H d k f l Problem mit HTML:
Nutzt die volle Komplexitt von SGML: Parsereffiziens leidet darunter HTML weicht mit Layout-Anweisungen die Trennung von Inhalt, Struktur und Layout wieder auf!! Damit einhergehend: Ungengende Darstellungsmglichkeiten
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XML, (X)HTML und SGML II Lsung: XML eXtensible Markup Language Standard gepflegt von World Wide Web Konsortium Definitorisch eine reine Untermenge von SGML, ausgerichtet auf effiziente Verarbeitung Fr Webanwendungen wurde zustzlich zu XML entwickelt:
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

CSS XHTML

Cascading Style Sheets als flexible Layout-Sprache Layout Sprache eXtensible HyperText Markup Language Eine Re-Definition von HTML voll konform zur XML-Standard, y / g selbstverstndlich ohne style/format-Anweisungen

Fr sonstige (u.a. datenbasierte) Anwendungen wurden weitere Sprachen definiert:


Schema-Sprachen (u.a. XML-Schema) zur Definition von Datenstrukturen (inkl. ausgeklgelter Apparat zur Datentypisierung) als Alternative zu DTD XSL eXtensible Stylesheet Language zur Transformation von Strukturen (XSL-T) und Definition von Layout (XSL-FO, Formatting Objects)
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
3

XML, (X)HTML und SGML III

XHTML

HTML SGML XML

Inhalt SGML XML


Vorlesung Web Engineering DHBW Stuttgart Campus Horb

Struktur DTD XML-Schema

Layout DSSSL CSS, XSL-T, XSL-FO , ,

XML - Kernstandards und -technologien

(Quelle: Thrnert, U Leipzig)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

XML Inhalt
Klassischer Datensatz
15344,AK1562,50023,"XML-Bibel",1,29.50,EURO

XML-Datensatz

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<order id="15344"> <kaeufer>Otto Huber</kaeufer> <order_details> <order details> <order_item item_id="1"> <buch id="50023"> XML-Bibel </buch> <autor>Hans Meier </autor> i / <preis value="29.50" unit"EURO" /> </order_item> </order_details> </order>

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Strukturiertheit von Dokumenten


Unstrukturierte Daten: Daten ohne Struktur (Strukturbeschreibung), keine Struktur aus dem Dokument selbst zu gewinnen (Bsp viele Texte, Bilder...) (Bsp. Texte Bilder ) Strukturierte Daten Daten entsprechen festen Schema, bei nderungen am Schema mssen auch die Daten gendert werden (Bsp relationale (Bsp. Datenbanken) Semi-strukturierte Daten Struktur muss nicht von vorneherein vorgegeben sein, kann sich sein auch aus den Daten ergeben ("embedded") Struktur kann nur teilweise bekannt sein oder muss sich nicht an ein fest vorgegebenes Schema halten. Struktur kann irregulr sein: Attribute knnen zu einem Objekt existieren, zu einem andere j gleichen Typs j yp jedoch nicht Objekt g Inhaltlich gleiche Attribute bei Objekten verschiedenen Typs Daten knnen auch einfach fehlen XML kann Inhalte mit unterschiedlichem Strukturiertheitsgrad darstellen
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
7

XML-Elemente

Elemente sind die grundlegenden Komponenten eines XMLXML Dokuments. Sie werden durch beliebige Namen reprsentiert, die in spitze reprsentiert Klammern eingeschlossen werden: <elementname>
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Mit der Definition eines neues Elements definiert man einen neuen Tag (sowie den zugehrigen Abschluss-Tag) Elemente knnen innerhalb von anderen Elementen definiert werden ( Hierarchien, Baumstruktur).

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Bestandteile eines XML-Dokuments


Auszeichnungen (Tags) immer paarweise: ffnender und schlieender Tag <Buch>Bohlen, D.: Nichts als die Wahrheit, 2003</Buch> Tags knnen hierarchisch geschachtelt werden Tags drfen nicht ineinander "verschrnkt" werden <Buch> <B h> <Autor>Bohlen, D.</Autor> <Titel>Nichts als die Wahrheit</Titel> <Jahr>2003</Jahr> </Buch> Tags knnen mit Attributen versehen werden hufig zur Spezialisierung eines Tag verwendet nur fr ffnende Tags erlaubt (werden innerhalb des Tag geschrieben) Form: attributName="attributWert" <Buch Typ="Biografie"> , / <Autor>Bohlen, D.</Autor> ....
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
9

Anatomie eines XML-Dokuments


offer store t name url book isbn title il price type amount currency author firstname lastname
Vorlesung Web Engineering DHBW Stuttgart Campus Horb <?xml version="1.0" encoding="UTF-8"?> <!-- This is just a comment--> <offer> <store> <name>Amazon</name> <url>http://www.amazon.com</url> </store> <book isbn="3456781234"> <title>Teach yourself XML in 21 days</title> <price type="retail"> <amount>23.99</amount> <amount>23 99</amount> <currency>USD</currency> </price> <author> <firstname>Simon</firstname> <lastname>North</lastname> </author> <author> <firstname>Paul</firstname> fi t P l /fi t <lastname>Hermans</lastname> </author> </book> </offer>

10

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beliebige Arten von Daten darstellbar


Daten mssen sich nicht auf die Vorstellung von einem Dokument und g seine Darstellung fr den Menschen beziehen beliebige Daten mglich <Messwert> <Station>MS345</Station> <Druck>1044</Druck> <Temperatur>284</Temperatur> </Messwert> Lesbarkeit durch Menschen ist intendiert (normale Textdarstellung) aber nicht das Hauptziel

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

11

Vermeidung von Namenskonflikten durch Namensrume (Namespaces)


Problem: werden Daten aus unterschiedlichen Bereichen oder g g p , Anwendungen im selben Dokument gespeichert, kann es zu Namenskollisionen kommen quote (Aktienkurs) q ( ) quote (Literatur) Dies fhrt zu Datenkorruption, bzw. zu Probleme bei der anschlieenden Definition von Dokumenttypen (DTD) oder yp ( ) Datentypen (Schemata) g Lsung: hnliches Konzept wie bei Programmiersprachen es werden Namensrume (Namespaces) definiert, die den g g Gltigkeitsbereich eines Tag-Names bestimmen Ein Namensraum wird als URI/URL definiert Elemente eines Namensrumes erhalten zur eindeutigen Kennzeichnung einen Prfix, der als Abkrzung fr den g g Namensraum dient
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
12

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Deklaration und Nutzung eines Namensraumes

Deklaration eines Namensraumes innerhalb eines beliebigen Elements mittels Att ib t xmlns (H fi aber i W itt l Attribut l (Hufig b im Wurzelelement): l l t) <namensraum:element xmlns:namensraum="http://www.myURI.de"> Bezeichnung des Namensraums (URI wie Prfix) ist frei whlbar. Es drfen innerhalb eines Elements sogar mehrere Namensrume deklariert werden. Gltigkeitsbereich eines Namensraumes erstreckt sich ber das Element in dem er definiert wurde und allen Unterelementen dieses Elementes. Elementes Wenn kein Prfix bei der Deklaration angegeben wird, ist die URI der Defaultnamensraum f l
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
13
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verwendung von Namespaces (I) <aTag xmlns:edi='http://ecommerce.org/schema'> <edi:price units='Euro'>32.18</edi:price> p p </aTag>


Tag-Name wird generell ber zwei Stufen (Prfix, URI) eindeutig gemacht URI ist nur Namenskonvention, wird nicht ausgewertet!
URI fr Prfix (http://ecommerce.org/s chema) Prfix fr Namespace (edi) XML-Element <price></price>

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

14

verwendet werden www.yourURI sowie www myURI knnen www yourURI www.myURI innerhalb von Element Wurzel und damit im ganzen Dokument verwendet werden www.myURI www myURI ist default Namensraum: wenn Element ohne Prfix auftaucht gehrt es in diesem Raum.
15

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

Verwendung von Namespaces (III)


<aTag xmlns:foo='http://ecommerce.org/schema'> <foo:price units='Euro'>32 18</foo:price> units='Euro'>32.18</foo:price> </aTag> Versus <aTag xmlns:bar='http://ecommerce.org/schema'> xmlns:bar http://ecommerce.org/schema > <bar:price units='Euro'>32.18</bar:price> </aTag>

Das Element price existiert trotzt unterschiedlicher Prfixnutzung nur in einem Namensraum, nl. http://ecommerce.org/schema

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

16

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verwendung von Namespaces (II) <wurzel xmlns="http://www.myURI" // xmlns:foo="http://www.yourURI"> <a> xxxxxxx <foo:b>yyyyyyy <baz:c xmlns:baz="http://www.ourURI"> zzzzzzzzzz <d>uuuuuuuuuuu</d> myUri: {wurzel, a, d} </baz:c> yourUri: {b} U i ourUri: {c} </foo:b> </a> / 3 N 3 Namensrume deklariert d kl i t </wurzel> www.ourURI kann nur innerhalb von Element c

Exkurs: Internetexplorer und HTML innerhalb einer XML-Datei <?xml version="1.0"?> <?xml-stylesheet type="text/css" ?> <html:html xmlns:html="http://umu.foo.de"> <html:head> <html:title>HTML innerhalb XML mittels Namensraum </html:title> </html:head> <html:body> <html:h1>HTML innerhalb XML mittels Namensraum</html:h1> <html:p>Dies ist eine <html:b>XML</html:b> Datei</html:p> </html:body> </html:html>

[Funktioniert nur mit MS-IE; Dieser Browser erkennt den MS IE; Namensraumprfix "html:", aber keine andere (keine Prfung der URI)]
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
17

Wohlgeformtheit von XML-Dokumenten


Wohlgeformheit bedeutet syntaktische Korrektheit eines XMLDokuments Regeln: Alle XML-Elemente (auer leeren Elementen) mssen durch paarweise Start-/Ende-Tags gekennzeichnet werden El Elemente knnen Text, andere Elemente oder eine Mi h t k T t d El t d i Mischung aus beidem enthalten leere Elemente knnen durch Tag-Paare wie <empty></empty> oder abgekrzt durch Schrgstrich am / d b k d hS h i h Tag-Schluss <empty /> dargestellt werden Tags mssen korrekt geschachtelt werden: jedes Element muss geschlossen werden, bevor ein weiteres Element der selben oder der darber liegenden Ebenen geffnet oder geschlossen werden kann Attribute mssen in der Form attributname="attributwert" mit Anfhrungszeichen geschrieben werden Gro Kleinschreibung Gro-Kleinschreibung muss beachtet werden (<Hotel> <hotel>)
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
18

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Wohlgeformtheit - Elementnamen Elementnamen bestehen aus Buchstaben, Zahlen, Bindestrich, Punkt oder Unterstrich (Underscore) Elementnamen beginnen mit Buchstaben oder Unterstrich drfen nicht mit "xml" (in beliebiger Gro/Kleinschreibung) oder mit einer Z hl beginnen d it i Zahl b i und drfen kein Leerzeichen enthalten Doppelpunkt nur zur Spezifikation von Namensrumen erlaubt
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

19

Finden Sie die Verste gegen die Wohlgeformtheit...

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

20

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

... <italic> <bold> Reiseplan </italic></bold> ... <Reise> <Abschnitt> <von>Duisburg></von> <nach>Mannheim></nach> <Zug-Nr>ICE234</Zug-Nr> <Abschnitt> <von>Mannheim></von> <nach>Mnchen></nach> </abschnitt> <von>Mnchen</von> <nach>Salzburg</nach> </Reise> ...

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Spezielle Markups <?xml ?> XML-Deklaration Mit Encodingsdeklaration, ein Attribut der XML-Deklaration, ist es mglich Umlaute direkt zu verwenden: <?xml version="1.0" encoding=ISO-8859-1?> <!DOCTYPE> Dokumententypdefinition, Angaben zur DTD <? ?> Processing Instruction wird nicht vom XML-Parser geparst sondern an weitere Programme bergeben <!-- Kommentar -->

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

21

Validierung von XML-Dokumenten


Die strengen Syntaxkonventionen erleichtern die Programmierung von XML Applikationen bereits erheblich wohlgeformte Dokumente Validierung erlaubt es zustzlich, die mglichen Baumstrukturen einzuschrnken valide Dokumente lid D k t Validierung findet immer gegenber einer Grammatik statt, d.h., ein valides Dokument ist wohlgeformt und konform zu einer vorgegebenen Grammatik Vorteile ganz wesentlich fr den Informationsaustausch: Einigung auf g gemeinsames Vokabular und Dokumentstruktur durch Festlegung einer zugrunde liegenden Grammatik Ein groer Teil der Fehlerabfragen kann so von der Applikation an einen Parser bertragen werden werden.
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
22
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verwendung von Grammatiken zur Definition von Dokumenttypen Wenn zwei Anwendungen dieselbe Grammatik verwenden, haben sie d h b i dasselbe V lb Verstndnis der Daten t d i d D t XML Dokumente fr XML-Dokumente zwei unterschiedliche Methoden, um eine Grammatik zu beschreiben: Document Type Definition (DTD) XML Schema DTD ltere und bislang gebruchlichere Methode aber Methode, Einschrnkungen z.B. eingeschrnkte Menge Datentypen Probleme mit Namensrumen

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

23

DTD

(Quelle: Thrnert, U Leipzig)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

24

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

DTD Document Type Definition: Typ-Deklaration I DTD Beispiel mit interner Dokumententypdeklaration:

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

25

DTD Document Type Definition: Typ-Deklaration II Das gleiche Beispiel mit externer Dokumententypdeklaration DTD-Datei: bsp_dtd.dtd:

XML-Datei: bsp_dtd.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Gruwort SYSTEM "bsp_dtd.dtd"> <Gruwort> <Gru>Hallo Welt!</Gru> <Sprecher>Mller</Sprecher> </Gruwort>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
26

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<?xml version="1.0" encoding="ISO-8859-1"?> <!ELEMENT Gruwort (Gru, Sprecher)> <!ELEMENT Gru (#PCDATA)> <!ELEMENT Sprecher (#PCDATA)>

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<?xml version="1.0" encoding="ISO-8859-1"?> ! OC Gruwort[ <!DOCTYPE G u o t[ <!ELEMENT Gruwort (Gru, Sprecher)> <!ELEMENT Gru (#PCDATA)> <!ELEMENT Sprecher (#PCDATA)> ]> <Gruwort> <Gru>Hallo Welt!</Gru> <Sprecher>Mller</Sprecher> </Gruwort>

DTD Document Type Definition: Typ-Deklaration III

Verffentlichte externe Dokumententypdeklaration <!DOCTYPE wurzelelement PUBLIC "Kennung""URI der DTD"> Kombination extern intern mglich: <!DOCTYPE wurzelelement S S ! OC l l SYSTEM " i" [ elemente] > "uri" l t ] Ein XML-Dokument ist wohlgeformt wenn es XML Dokument wohlgeformt, konform XML-Syntax geschrieben ist Ein XML-Dokument ist valide, wenn es wohlgeformt ist und konform seines DTDs ist.
Validierung mit Macromedia Dreamweaver oder Visual Studio (oder mit einem validierenden Parser (z.B. Xerces))
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
27

DTD: Elementdeklarationen I

<!ELEMENT element (unterelemente)> #PCDATA


steht fr "Parsed Character Data", beliebige Zeichenketten (die se bst e e ags e t a te d e ); att ote selbst keine Tags enthalten drfen); Blattknote im XML-Baum au

<!ELEMENT element (a,b,c)>


element hat a und b und c als unterelemente, in dieser Reihenfolge element hat entweder a oder b oder c als unterelement
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<!ELEMENT element (a|b|c)>

a? a kommt 1x vor, oder berhaupt nicht (0 oder 1 mal)


a+ a kommt mindestens 1x vor (1 oder mehrere male) a* a kommt beliebig oft vor (0 oder mehrere male) Schachtelung: (((a|b)*,c+)?,d)
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

28

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

DTD: Elementdeklarationen II Gemischte Data:

<!ELEMENT element (#PCDATA|a|b|c)*>


element darf a, b, c und Zeichenketten in beliebiger Reihenfolge a b enthalten

<!ELEMENT element ANY>


element kann beliebige Zeichenketten und weitere Tags enthalten

<!ELEMENT element EMPTY>


element ist ein leeres Element: </element>

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

29

DTD: Attributdeklarationen <!ATTLIST zielelement attributname attributtype modifizierer> Modifizierer: M difi i

#REQUIRED Attributwert muss spezifiziert werden #IMPLIED Attributwert kann unspezifiziert bleiben #FIXED "wert" Attributwert ist festgelegt und kann "wert"
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

vom benutzer nicht gendert werden Der Defaultwert des Attributs

Attributtypen (die wichtigsten): CDATA Zeichenkette Aufzhlung (a|b|c) ENTITY entity, in der dtd deklariert ENTITIES white-space getrennte liste mit entities ID eindeutiger Elementbezeichner IDREF der wert eines eindeutigen ID-typ-Attributs ID typ Attributs IDREFS white-space getrennte liste mit idrefs
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
30

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beispiel

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

31

Beispiel alternativ und in XML benutzt

... <!ELEMENT <!ATTLIST <!ATTLIST <!ATTLIST <!ATTLIST ...

person person person person person

(#PCDATA)> geschlecht (m|w) #IMPLIED> pid ID #REQUIRED> kollegen IDREFS #IMPLIED> chef IDREF #IMPLIED>
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

... <person pid="0815">M</person> p p p <person pid="4711" chef="0815">Q</person> <person pid="007" chef="0815">James Bond</person> <person geschlecht="w" pid=906090" chef="0815" < hl ht " " id 906090" h f "0815" kollegen="007 4711"> Ms. Moneypenny</person> ...
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
32

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

... <!ELEMENT person (#PCDATA) <!ATTLIST person geschlecht (m|w) #IMPLIED person pid ID #REQUIRED person kollegen IDREFS #IMPLIED person chef IDREF #IMPLIED > ...

DTD: Entities, Deklaration und Nutzung

Deklaration: D kl ti <!ENTITY name "ersetzungszeichen"> Benutzung in der XML-Datei: &name; Beispiel: Deklaration <!ENTITY anrede "Sehr geehrte Damen und Herren,"> Benutzung: <inhalt> <gruss>&anrede;</gruss> / <text>...</text> </inhalt> Beispiel: Deklaration <!ENTITY copyright "&#xA9;"> Benutzung: <copy>&copyright; BA-Horb</copy>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
33

DTD: Entities, externe Definition Definition:

<!ENTITY ExternalEntity SYSTEM "datei">


Benutzung in der XML-Datei:

&ExternalEntity;
kopiert den Inhalt der Datei datei mit xml-Elementen an der stelle
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beispiel: p

<!ENTITY theNews SYSTEM "news.txt">


news.txt:

bla bla bla bla umu bla foo bla


Benutzung in XML-Datei:

<newstext>&theNews;</newstext>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
34

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

DTD: Parameter Entities Parameter Entities sind Entities, die im Gegensatz zu normalen Entities nicht in einer XML-Datei, sondern ausschlielich in einer DTD verwendet werden knnen (Sind als DTD-Interne Makros gedacht)
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Deklaration

<!ENTITY % name "ersetzungszeichen">


Benutzung in der DTD

%name;

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

35

Bedingte Definitionen Explizit Definitionen in DTD nicht aufnehmen/bercksichtigen:

<![IGNORE[ Definitionen D fi iti ]]>


Explizit Definitionen in DTD aufnehmen/bercksichtigen

<![INCLUDE[ Definitionen ]]>


Nutzung ntzlich in Verbindung mit Parameter Entities

<!ENTITY % alternativ_1 'INCLUDE' > ! l i 1 <!ENTITY % alternativ_2 'IGNORE' > <![%alternativ_1;[ <![%alternativ 1;[ ]]> <![%alternativ_2;[ ]]>
Umschalten der Includes/Ignores durch Tausch in den Parameter Entities
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
36

Definition der Verwendung nicht-textueller Daten XML behandelt selbst nicht den Umgang mit nicht-textuellen Daten, sondern legt lediglich eine Erkennungsmechanismus fest fr die XML benutzende A b d Anwendung (und es gibt auch keine generelle d ( d ib hk i ll Formatstandardisierung): NDATA (Nicht-xmlDATA), externe nicht geparste Entities Zwei Schritte (Beipiel): Definition des (externen) Formats (hier: JPEG)
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<!NOTATION JPEG PUBLIC "ISO/IEC 10918:1993//NOTATION Digital Compression and Coding of Continuous-tone Still Images (JPEG)//EN" > oder <!NOTATION JPEG SYSTEM "bild/jpeg" >
Weiterer Benutzung in der DTD:

<!ENTITY bild_BA SYSTEM "BA.JPEG" NDATA JPEG > <!ATTLIST institution bild ENTITY #REQUIRED >
Benutzung in der XML-Datei:

<institution bild="bild_BA">...</institution>
Es wird aber von dieser Nutzung abgeraten; Bessere Alternative ist Benutzung des XLink Standards (intuitiver weil HTML hnlich) XLink-Standards HTML-hnlich)
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
37

DTDs und Namensrume DTD kennt das Konzept der Namensrume nicht. Wenn mit Prfixen in der XML-Datei gearbeitet wird, dann mssen die explizit in der DTD als Teil der Elementname deklariert sein Das wrde bedeuten, dass mit nderung der Bezeichnung eines Prfixes in einer XML-Datei, diese nicht mehr valide ist bzgl. der DTD (Element nicht mehr erkannt) Abhilfe bieten die Parameter Entities: Mit ihnen kann man schnell in der DTD umschalten <!ENTITY % nspraefix "foo" > <!ENTITY % nscolon ":" > :
(fr default namensraum "") (fr default namensraum "") )

<!ENTITY % myElement "%nspraefix;%nscolon;myElement" > <!ELEMENT %myElement; (#PCDATA)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

38

Aufgabe Definieren Sie eine DTD fr eine Sammlung von Kontakten (Kontaktdatenbank). Verwenden Sie Attributierungen und (Parameter)Entities. )E i i Sie brauchen Angaben wie:
Name, Vorname, Vorname Firma, Firmenadresse (ggf. Str. oder Postfach), Telefon, Fax, Telefon Fax Privatadresse, sowie Privattelefon usw.

Geben Sie ebenso eine XML-Datei mit ein paar Kontaktdaten. Die XML XML Datei Kontaktdaten XMLDatei soll valide sein bzgl. Ihres DTDs. Geben Sie ein DTD-Fragment dass die Deklaration fr das HTML Tag DTD Fragment, HTML-Tag <IMG> gibt Versuchen Sie sich an eine DTD fr XHTML (beim W3C knnen Sie mal nachschauen ob Sie es richtig machen)
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
39

XML-Schema Sprachen

(Quelle: Thrnert, U Leipzig)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

40

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XML-Schema (XSD)
Nachfolger fr DTDs Frher: XML zur Strukturierung von Dokumenten entwickelt, dadurch ist XML+DTD ziemlich eingeschrnkt, z. B.: durch relativ einfache Datentypen: Elementinhalte: im Wesentlichen Zeichenfolgen (Parsed Character Data), Attributtypen: CDATA, ID, Aufzhlungen, XML bietet keine Mglichkeiten Inhaltsbereiche genauer zu spezifizieren und automatisch zu validieren. Jetzt: zunehmend auch zum Austausch von Daten(-strmen) genutzt, hierzu wird jedoch eine grere Flexibilitt erforderlich XML-Schema soll die Beschrnkungen der DTD aufheben. (XSD = XML Schema Definition)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

41

Schwche/Strke DTD
Schwche von DTD im Bezug auf Schema: (Tag DTD hat fast kein Data Typing insbesondere nicht fr Elemente (TagInhalte) DTD-Syntax ist kein XML-Syntax, braucht einen eigenen Parser Erweiterbarkeit und Skalierbarkeit von DTD sind schwach Das Handling von Namensrumen ist nur mit Kniffe und Tricks mglich Behandlung von Reihenfolge und Anzahl von Kindelementen in "mixed Content" ist nicht mglich wie gewnscht g Strke von DTD im Bezug auf Schema: DTD ist einfach In DTD kann man Entities definieren, in Schema nicht.

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

42

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XML-Schema (XSD)
Vorteile: Kein zustzlicher DTD-Parser erforderlich, da XML Schema selbst DTD Parser erforderlich XML-Schema auch XML-Syntax verwendet, vielfltige vordefinierte Datentypen, komplexe Datentypen Ableitung neuer Datentypen durch Restriktionen oder Erweiterungen, Verwendung von regulren Ausdrcken um Wertebereiche einzuschrnken, erlaubt Definition von Integrittsbedingungen (unique, key) Verwendung verteilter Schemata

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

43

Schemas / Schemata /Schema-sprachen


Es gibt nicht ein Schema, sondern mehrere Schemas: Relax (http://www.xml.gr.jp/relax/) Schematron (http://www.ascc.net/xml/resource/schematron/schematron.html) TREX - Tree Regular Expressions for XML (http://www.thaiopensource.com/trex/) (http://www thaiopensource com/trex/) DDML - Document Definition Markup Language, auch bekannt als Xschema (http://purl.oclc.org/NET/ddml) XML Schema definiert von W3C (http://www.w3.org/XML/Schema) Es gibt noch weitere die allerdings "auslaufen": weitere, auslaufen : Document Content Description (DCD) Schema for Object-Oriented XML (SOX) XML Data Reduced (XDR) Wir behandeln im weiteren W3C XML Schema
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

44

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Schema-Validitt
Ein XML-Datei ist Schema-valide wenn: Die Datei wohlgeformt ist (korrektes XML) Die Datei bzgl. Seines Schemas korrekt ist

Java Packages fr Schema Handling: ttp //ja a su co / / http://java.sun.com/xml/ Visual Studio kann ebenso XML-Dateien auf Schema-Validitt prfen

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

45

XML-Datei Beispiel: Purchase Order

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

46

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Schema Validatoren: Online W3C XML-Schema Validatoren: http://schneegans.de/sv/ http://www.w3.org/2001/03/webdata/xsv http://tools.decisionsoft.com/schemaValidate/

XML Schema Beispiel Purchase Order (Teil 1)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

47

XML Schema Beispiel Purchase Order (Teil 2)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

48

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Einfachste Schema-Definition
Die Schema-Datei: greeting.xsd

<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="GREETING" type="xsd:string"/> </xsd:schema>


Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Korrespondierende xml-Datei: greeting.xml (ohne Namensraumbenutzung) <?xml version="1.0"?> <GREETING xsi:noNamespaceSchemaLocation="greeting.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> // 3 /2001/ Hello XML!</GREETING>

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

49

Aufbau XML Schema Dokument - Rahmen uerer Rahmen der Schema-Datei (greeting.xsd): <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... </xsd:schema> Einbindung der Schemadatei in die XML-Datei:
<Wurzelelement xsi:noNamespaceSchemaLocation="greeting.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... </Wurzelelement>

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

50

Das Gleiche bei Benutzung von Namespaces uerer Rahmen der Schema-Datei (nsgreeting.xsd):
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" p y p xmlns="http://my.namespace.de" targetNamespace="http://my.namespace.de" elementFormDefault="qualified" attributeFormDefault="unqualified"> ... q

Einbindung der Schemadatei in die XML-Datei:


<?xml version="1.0" standalone="no"?> <Wurzelelement xmlns="http://my.namespace.de" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://my.namespace.de nsgreeting.xsd"> ...
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

51

XML-Schema (XSD)
Basis-Bausteine der Schema-Definition: Elemente: besitzen optional einen Typ und knnen hierarchisch geschachtelt werden werden, Gruppen: Gruppierungen von Elementen, Nutzung ber Referenzen, R f SimpleType: Von den Basis-Typen abgeleitete Typen (3 Arten: atomare Typen, Listentypen und Vereinigungstypen), ComplexType: Zusammengesetzte Typen (Teilbume), Attribute: prinzipiell analog zu den Attributen in den DTD's, jedoch drfen nur komplexe Typen Attribute tragen tragen, Attributgruppen: Gruppierungen von Attributen, Nutzung ber Referenzen f
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
52

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Elementare Datentypen
Elementarer Datentyp (hier String):

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

53

Numerische Datentypen I
Name: xsd:float Type: IEEE 754 32-bit floating point number, or as close as you can get using a base 10 representation; same as Java's float type IEEE 754 64-bit floating point number, or as close as you can get using a l i base 10 representation; same as Java's double type Arbitrary precision, decimal numbers; same as java.math.BigDecimal An arbitrarily large or small integer; same as java.math.BigInteger Examples: -INF, -1E4, -0, 0, 12.78E-2, 12, INF, 12 INF NaN

xsd:double

-INF, 1.401E-90, -1E4, -0, 0, 12.78E-2, 12, 12 78 2 12 INF, NaN, 3.4E42

xsd:decimal

xsd:integer

-500000000000000000000000, 9223372036854775809, 126789, 1 0 1, 5, 23, 126789 -1, 0, 1 5 23 42, 126789, 9223372036854775808, 456734987324983264987362495 8 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, . . . -1, -2, -3, -4, -5, -6, -7, 8, -9, . . .

xsd:nonPositiveInteg er xsd:negativeInteger

An integer less than or equal to zero

An integer strictly less than zero

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

54

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

-2.7E400, 5.7E-444, 3.1415292, 0, 7.8, 90200.76, 3.4E1024

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

insgesamt z. Zt. 44 elementare Typen: yp ( ) Numeric types (16) Time types (9) XML types (12) String types (3) The boolean type (1): xsd:boolean The URI reference type (1): xsd:anyURI The binary types (2): xsd:base64Binary und xsd:hexBinary

Numerische Datentypen II

Name: xsd:unsignedLong d i dL

Type: An i ht b t A eight-byte unsigned integer i d i t

Examples: 0, 1 2 3, 4 5 6, 7 8, 9 10 0 1, 2, 3 4, 5, 6 7, 8 9, 10, 11, 12, . . .18446744073709551614, 18446744073709551615 0, 1, 2, 3, 4, 5, 0 1 2 3 4 5 . . .4294967294, 4294967294 4294967295

xsd:unsignedInt

A four-byte unsigned integer

xsd:unsignedShort

A two-byte unsigned integer

xsd:unsignedByte

A one-byte unsigned integer

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, . . . 252, 253, 254, 255 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, . . .

xsd:positiveInteger

An integer strictly greater than zero

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

55

Zeit-Datentypen
Name: xsd:dateTime Type: A particular moment in Coordinated Universal Time, up to an arbitrarily small fraction of a second A specific day in history A specific time of d ifi i f day that h recurs every day A day in no particular month, or y rather in every month A month in no particular year A given y g year Examples: 1999-05-31T13:20:00.000-05:00, 199905-31T18:20:00.000Z, 1999-0531T13:20:00.000, 1999 05 31T13:20:00 000 1999-0531T13:20:00.000-05:00.321 -0044-03-15, 0001-01-01, 1969-06-27, 2000-10-31, 2001-11-17 14:30:00.000, 09 30 00 000 05 00 14 30 00 000 09:30:00.000-05:00, 14:30:00.000Z --01, --02, . . . 09, --10, --11, -12, . . ., --28, --29, --30, --31 , , , , , --01--, --02--, --03--, ---04--, . . . --09--, --10--, --11--, --12-. . . -0002, -0001, 0001, 0002, 0003, , , , , , . . .1998, 1999, 2000, 2001, 2002, . . .9997, 9998, 9999 1999-12, 2001-04, 1968-07
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

xsd:date xsd:time d i

xsd:gDay

xsd:gMonth g xsd:gYear

xsd:gYearMonth

A specific month in a specific year A date in no particular year, or rather in every year A length of time, without fixed endpoints, to an arbitrary d i bi fraction of a second

xsd:gMonthDay xsd:duration

--10-31, --02-28, --02-29 P2000Y10M31DT09H32M7.4312S

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

56

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, . . .65533, 65534, 65535

XML-Datentypen
Name: xsd:ID Type: XML 1.0 ID attribute type; any XML name that's unique among ID type attributes and elements XML 1 0 IDREF attribute t 1.0 tt ib t type; any XML name th t' used as th that's d the value of an ID type attribute or element elsewhere in the document XML 1.0 ENTITY attribute type; any XML name that's declared as an unparsed entity in the DTD XML 1.0 NOTATION attribute type; any XML name that's declared as a notation name in the schema using xsd:notation XML 1.0 IDREFS attribute type; a white space-separated list of XML names that are used as values of ID type attributes or elements elsewhere i the document in XML 1.0 ENTITIES attribute type; a white space-separated list of ENTITY names XML 1.0 NMTOKEN attribute type XML 1.0 NMTOKENS attribute type, a white space-separated list of name tokens Valid values for xml:lang as defined in XML 1.0 An XML 1.0 Name, with or without colons a prefixed name a local name without any colons Examples: p1, p2, ss124-45-6789, _92, red, green, NT-Decl, seventeen p1, p2, ss124-45-6789, _92, p1, 1 2 124 45 6789 92 1 p2, red, green, NT-Decl, seventeen PIC1, PIC2, PIC3, cow_movie, MonaLisa, Warhol GIF, jpeg, TIF, pdf, TeX

xsd:IDREF d IDREF

xsd:ENTITY xsd:NOTATION

xsd:IDREFS

p1 p2, ss124-45-6789 _92, red green NT-Decl seventeen


Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

xsd:ENTITIES xsd:NMTOKEN xsd:NMTOKENS

PIC1 PIC2 PIC3 12 are you ready 199 MI NY LA CA p1 p2 p3 p4 p5 p6 1 2 3 4 5 6 en, en-GB, en-US, fr, i-lux, ama, ara, ara EG, x choctaw ama ara ara-EG x-choctaw set, title, rdf, math, math123, xlink:href, song:title song:title, math:set, xsd:element set, title, rdf, math, tei.2, href

xsd:language xsd:Name xsd:QName xsd:NCName

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

57

Zeichenkette-Datentypen

Name: g xsd:string

Type: A sequence of zero or more q Unicode characters that are allowed in an XML document; essentially the only forbidden characters are most of the C0 controls, surrogates, and the byte-order mark A string th t d t i that does not t contain any tabs, carriage returns, or linefeeds

Examples: p , p , p1, p2, 123 45 6789, ^*&^*&_92, red g , , green blue, NT-Decl, seventeen; Mary had a little lamb, The love of money is the root of all Evil., Would you paint the lily? Would you gild gold?

xsd:normalizedString d li dSt i

PIC1, PIC2 PIC3 PIC1 PIC2, PIC3, cow_movie, MonaLisa, i M Li Hello World , Warhol, red green

xsd:token

A string with no leading or trailing white space, no tabs, no linefeeds, and not more than one consecutive space

p1 p2, ss123 45 6789, _92, red, green, NT Decl, seventeenp1, p2, 123 45 6789, ^*&^*&_92, red green blue, NT-Decl, seventeen; Mary had a little lamb, The love of money is the root of all Evil.

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

58

Einfache Datentypen erstellen durch Ableitung:


Simple types konstruieren mit xsd:simpleType unter Nutzung von:

xsd:restriction
selektion einer Untermenge des Basistyps

xsd:union
kombination von Typen o b at o o ype

xsd:list
Auflisting der mglichen Werten des Typs
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beispiel:

<xsd:simpleType name="phonoYear"> <xsd:restriction base="xsd:gYear"> <xsd:minInclusive value="1877"/> sd: c us e a ue / <xsd:maxExclusive value="2100"/> </xsd:restriction> </xsd:simpleType>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
59

Benutzung von Facetten (Beschrnkungen)


xsd:minInclusive: the value that all instances must be greater than or equal to xsd:minExclusive: the value that all instances must be strictly greater than xsd:maxInclusive: the value that all instances must be less than or equal to xsd:maxExclusive: the value that all instances must be strictly less than xsd:enumeration: a list of all legal values xsd:whiteSpace: how white space is treated within the element xsd:pattern: a regular expression to which the instance is compared xsd:length: the exact number of characters in the element xsd:minLength: the minimum number of characters allowed in the element xsd:maxLength: the maximum number of characters allowed in the element xsd:totalDigits: th maximum number of di it allowed in the element d t t lDi it the i b f digits ll d i th l t xsd:fractionDigits: the maximum number of digits allowed in the fractional part of the element

Nicht alle Facetten knnen auf allen Datentypen angewendet werden.

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

60

Beispiele (xsd:restriction)
Ableitung von Str255 aus xsd:string

<xsd:simpleType name="Str255"> name Str255 > <xsd:restriction base="xsd:string"> <xsd:minLength value="1"/> <xsd:maxLength value="255"/> </xsd:restriction> </xsd:simpleType>
Enumeration von Stringwerten
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xsd:simpleType name="choose abc"> name choose_abc > <xsd:restriction base="xsd:string"> <xsd:enumeration value="aaa"/> <xsd:enumeration value="bbb"/> value= bbb /> <xsd:enumeration value="ccc"/> </xsd:restriction> </xsd:simpleType> </ d i l T >
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
61

Beispiele (xsd:union)
Ableitung von Typen durch Union: (Bespiel mit Nutzung der Facette Pattern)

<xsd:simpleType name="MoneyOrDecimal"> <xsd:union> <xsd:simpleType> <xsd:restriction base="xsd:decimal"> </xsd:restriction> </xsd:simpleType> p yp <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="\p{Sc}\p{Nd}+(\.\p{Nd}\p{Nd})?"/> </xsd:restriction> </xsd:simpleType> </xsd:union> </xsd:simpleType>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

62

Beispiele (xsd:list)
Ableitung von Typen durch List:

<xsd:simpleType name="YearList"> name YearList > <xsd:list itemType="xsd:gYear"/> </xsd:simpleType>


definiert: white space-separated list of legal xsd:gYear values
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

63

Komplexe Datentypen Komplexe Datentypen konstruieren mit xsd:complexType unter Nutzung von:

xsd:sequence
jedes Element kommt implizit/defaultmig genau 1x vor, in der spezifizierten Reihenfolge nderung der Hufigkeit des Vorkommens mittels Attribute minOccurs und maxOccurs (wert: 0,1,2,...,unbounded)

xsd:all
jedes Element kommt hchstens 1x vor, die Reihenfolge ist unwichtig

xsd:choice
eines der Elemente soll vorkommen (entweder-oder-Wahl)

xsd:group

nur Gruppierung von Elementen

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

64

Leere Elemente sind komplexe Datentypen Definition von leeren Elementen: yp pp g Definieren als Type ohne Gruppierungselemente

<! <!-- An empty element --> > <xsd:complexType name="IMG"></xsd:complexType>


Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

65

Attribute Attribute definieren mittels xsd:attribute

<xsd:complexType name="IMG"> <xsd:attribute < d tt ib t name="SRC" t "SRC" type="xsd:anyURI " d URI use="required" /> <xsd:attribute name="WIDTH type="xsd:positiveInteger"/> <xsd:attribute name="HEIGHT" type="xsd:positiveInteger"/> <xsd:attribute name="ALT" type="xsd:string"/> name= ALT type= xsd:string /> </xsd:complexType>

Attribute mssen auerhalb und nach evt. Elementgruppierungen stehen Attribute sind per default optional, notwendige Attribute knnen definiert werden mit dem xsd:attribute Attribut use="required"

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

66

Attributgruppierung Attributen knnen gruppiert und referenziert werden (Analogon zu DTD Parameterentities) globale Definition der Gruppe:

Benutzung:

<xsd:complexType name="IMG"> < d l T "IMG"> <xsd:attributeGroup ref="IMGattributes" /> </xsd:complexType>


(ist i leeres T ) (i t ein l Tag)
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
67

Komplexe Datentypen
Komplexer Datentyp USAdress definiert ein Teilbaum (sequence), und ein Attribut namens country fr das Element

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

68

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xsd:attributeGroup name=IMGattributes"> <xsd:attribute name="SRC" type="xsd:anyURI"/> <xsd:attribute name="WIDTH" type="xsd:positiveInteger"/> <xsd:attribute name="HEIGHT" name= HEIGHT type="xsd:positiveInteger"/> <xsd:attribute name="ALT" type="xsd:string"/> </xsd:attributeGroup>

Verwendung komplexer Datentypen zur Definition anderer Datentypen 'USAddress' wird zur Definition der Subelemente von PurchaseOrderType 'PurchaseOrderType verwendet Attribut: 'orderDate'

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

69

Zusammensetzung Gesamtschema Purchase Order


Definition von PurchaseOrder ber den zuvor defininierten Typ PurchaseOrder yp Type

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

70

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Aufbau von Content-Modellen in Datentypen


Konstrukte xsd:group: Gruppierung von Elementen xsd:sequence: Elemente genau in dieser Reihenfolge, gesteuert durch minOccurs und maxOccurs
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

xsd:choice: nur eines (oder keines) der Elemente xsd:all: alle Elemente knnen einmal oder keinmal in beliebiger Reihenfolge auftreten

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

71

Nur Text / Mixed Content


Elemente, die nur Daten beinhalten (DTD #PCDATA) l di b i h l ( )

<xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> i l <xs:extension base="xs:integer"> (alternativ: restriction) <xs:attribute name="country" type="xs:string" /> </xs:extension> </ t i > </xs:simpleContent> </xs:complexType> </xs:element>
Elemente, die neben Unterelement auch Daten beinhalten

<xs:element name="letter"> <xs:complexType mixed="true"> < l T i d "t "> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
72

xsd:any und xsd:anyAttribute Benutzung von beliebigen Unterelementen (DTD: ANY) und Benutzung von beliebigen Attributen

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

73

Anonyme versus benannte Datentypen

<xs:element name="shoesize" type="shoetype"/> <xs:complexType name="shoetype"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> / p </xs:complexType>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
74

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> / </xs:simpleContent> </xs:complexType> </xs:element>

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> yp g / <xs:any minOccurs="0"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:element>

XML-Schema (XSD)
Fazit: XML-Schema lst die Probleme, die bei der Verwendung von XML fr d f den Datenaustausch aufgetreten sind: D t t h f t t i d Genaue Definition der auszutauschenden Daten, automatische Validierung der Daten, Ablsung der DTDs durch XML-Schema scheint mittel- bis langfristig mglich, Mittlerweile existiert eine Reihe von Werkzeugen zur Verarbeitung von XML-Schema, XML-Schemas definieren ausschlielich die Syntax der auszutauschenden Daten, die Semantik der auszutauschenden Daten mssen die beteiligten Partner gemeinsam definieren.
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

75

Fr weiteres Studium und Referenz Tutorial p // / / p http://www.w3schools.com/schema/default.asp Referenz http://www.w3schools.com/schema/schema_elements_ref.asp http://www w3schools com/schema/schema elements ref asp

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

76

Aufgabe Machen Sie die gleiche Aufgaben als bei DTD ( (Kontaktdatenbank, IMG-Tag), diesmal mit besserer Datentypisierung , g), yp g mittels XML-Schema [Tip: Visual Studio hilft Ihnen auf dem Sprung] Machen Sie eine Schemadefinition fr einen Lieferschein (Beispiel fr ein Schein wurde geliefert)
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

77

XML - Kernstandards und -technologien

(Quelle: Thrnert, U Leipzig)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

78

Das Beispiel als Baum

Typen Knoten im Baum: The root Elements Text Attributes Namespaces Processing instructions Comments
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
79

XPATH Sprache zur Adressierung von Dokumententeilen Aktuelle Version vom 16.11.1999 (recommendation) Operiert auf der abstrakten, logischen Struktur des XMLDokuments (Baum Darstellung) (Baum-Darstellung) Ermglicht die Angabe von Objekten des Dokuments mittels Verwandtschaftsbeziehungen Wesentliche Konstrukte Achsenausdrcke (Axes) Adressierungspfade (Location Paths) d u g p ad ( o a o a )
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
80

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XPath Achsenausdrcke Wichtigste Beispiele fr Achsenausdrcke child descendant parent p ancestor following-sibling preceding attribute ...

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

81

XPath Achsenausdrcke (II) Wichtigste Beispiele fr Achsenausdrcke child descendant parent p ancestor following-sibling preceding attribute

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

82

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XPath Achsenausdrcke (III) Wichtigste Beispiele fr Achsenausdrcke child descendant parent p ancestor following-sibling preceding attribute

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

83

XPath Achsenausdrcke (IV) Wichtigste Beispiele fr Achsenausdrcke child descendant parent p ancestor following-sibling preceding attribute

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

84

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XPath Achsenausdrcke (V) Wichtigste Beispiele fr Achsenausdrcke child descendant parent p ancestor following-sibling preceding attribute

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

85

XPath Achsenausdrcke (VI)


/ Wichtigste Beispiele fr Achsenausdrcke child 1. 2. descendant parent p 3.1 31 ancestor following-sibling 3.1.1 311 3.1.2 312 preceding attribute

3. 3.4 34

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

86

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

3.1.3 313

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XPath Achsenausdrcke (VII)


/ Wichtigste Beispiele fr Achsenausdrcke child 1. 2. descendant parent p 3.1 31 ancestor following-sibling 3.1.1 311 3.1.2 312 preceding attribute

3. 3.4 34

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

87

XPath Achsenausdrcke (VIII) Wichtigste Beispiele fr Achsenausdrcke child descendant parent p ancestor following-sibling preceding attribute

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

88

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

3.1.3 313

Smtliche Axenausdrcke
Axis: ancestor Selects From: The parent of the context node, the parent of the parent of the context node, the parent of the parent of the parent of the context node, and so forth back to the root node The ancestors of the context node and the context node itself The attributes of the context node The immediate children of the context node The children of the context node, the children of the children of the context node, and so forth All nodes that start after the end of the context node, excluding attribute and namespace nodes All nodes that start after the end of the context node and have the same parent as the context node The namespace of the context node The unique parent node of the context node All nodes that finish before the beginning of the context node, excluding attribute and d th t fi i h b f th b i i f th t t d l di tt ib t d namespace nodes All nodes that start before the beginning of the context node and have the same parent as the context node The context node
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

ancestor-or-self attribute child descendant descendant-or-self descendant or self following following-sibling namespace parent preceding di preceding-sibling self

The context node itself and its descendants

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

89

XPath Adressierungspfade Was beinhalten Adressierungspfade Syntaktische Ausdrcke fr den qualifizierenden Pfad Adressierungspfade werden gebaut mit /, //, ::, [, ] und Achsenausdrucken Verfolgen das Prinzip der schrittweisen Verfeinerung Quasi ein Navigieren durch den von den Elementen des Dokuments aufgespannten Baum Angabe von Kardinalitten zur Qualifikation von Elementen mglich
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
90

XPath Adressierungspfade (II) Beispiele fr Adressierungspfade (jeweils nicht-abgekrzte und abgekrzte Notation) child::para para : alle para-Elemente innerhalb des aktuellen Elements child::* hild * * : alle Elemente innerhalb des aktuellen Elements
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

attribute::* attribute:: @* : alle Attribute des aktuellen Elements child::para[position()=1] p [p () ] para[1] : das erste para-Element innerhalb des aktuellen Elements /descendant::para[attribute::type="warning"] //para[@type="warning"] : alle para-Elemente des aktuellen Dokuments, die ein p , Attribut type mit der Ausprgung warning besitzen
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
91

Abkrzungen / Funktionen

Abbreviation: . .. name @name //

Full: self::node() () parent::node() child::name attribute::name /descendant-or-self::node()/

Nach einem Achsenausdruck kann statt der Name einer Knote eine der folgenden Funktionen folgen: comment() selektiert eine Kommentarknote text() selektiert eine Textknote processing-instruction() processing instruction() selektiert eine <? ... ?> Knote ?>-Knote node() selektiert beliebiger Type Knote (Achtung!!: "*" selektiert nur Elementknoten)
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
92

Weitere Funktionen
Function: position() last() count(node-set) id(string1 string2 string3) key(string name, Object value) document(string URI, string base) Return Type: number number number node set Returns: The position of the context node in the context node list; the first node in the list has position 1 The number of nodes in the context node list; this is the same as the position of th l t node i th li t iti f the last d in the list The number of nodes in node-set. A node set containing all the elements anywhere in the same document that have an ID named in the argument list; the empty set if no element has the specified ID. A node set containing all nodes in this document that have a key with the specified value. Keys are set with the top-level xsl:key element. A node set in the document referred to by the URI; the nodes are chosen from the named anchor or XPointer used by the URI. If there is no named anchor or XPointer, then the root element of the named document is the node set. Relative URIs are relative to the base URI given in the second argument. If the second argument is omitted, then relative URIs are relative to the URI of the style sheet (not the source document!). The local name (everything after the namespace prefix) of the first node in the node set argument; can be used without any arguments to get the local name of the context node. The URI of the namespace of the first node in the node set; can be used without any arguments to get the URI of the namespace of the context node; returns an empty string if the node is not in a namespace. The qualified name (both prefix and local part) of the first node in the node set argument; can be used without an argument to get the qualified name of the context node. A unique identifier for the first node in the argument node set; can be used without any argument to generate an ID for the context node.

node set

node set

local-name(node set)

string

namespace-uri(node set)

string

name(node set)

string

generate-id(node set)

string

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

93

Boolsche Ausdrcke

Beispiel:

// //some_element[position()=1 and p [p () position()=last()] () ()]


Vorlesung Web Engineering DHBW Stuttgart Campus Horb
94

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

= != &lt; (<) > &lt;= ( ) lt (<=) >= and or not() true() false()

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beispiele

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

95

Zahlen und arithmetische Operatoren +, -, *, div mod, floor(), ceiling(), round() und sum()

Beispiele:
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

//some_element[position() mod 2 = 1] // l t[ iti () d sum(descendant::some_element) div count(descendant:: some_element)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

96

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

String-Funktionen
Function: starts-with(main_string, prefix_string) contains(containing_string , contained_string) substring(string, offset, length) substring-before(string, marker-string) substring-after(string, marker-string) string-length(string) normalize-space(string) Return Type: Boolean Boolean String Returns: True if main_string starts with prefix_string; false otherwise True if the contained_string is part of the containing_string; false otherwise length characters from the specified offset in string; or all characters from the offset to the end of the string if length is omitted; length and offset are rounded to the nearest integer if necessary The part of the string from the first character up to (but not including) the first occurrence of marker-string The part of the string from the end of the first occurrence of markerstring to the end of string; the first character in the string is at offset 1 The number of characters in string The string after leading and trailing white space is stripped and runs of white space are replaced with a single space; if the argument is omitted the string value of the context node is normalized

String String

Number String

translate(string, replaced_text, replacement_text) concat(string1, string2, . . . ) format-number(number, format-string, localestring)

String

Returns string with occurrences of characters in replaced_text replaced by the corresponding characters from replacement_text Returns the concatenation of as many strings as are passed as arguments in the o de the were passed order they e e

String String

Returns the string form of number formatted according to the specified format-string as if by Java 1.1's java.text.DecimalFormat class (see http://java.sun.com/products/jdk/1.1/docs/api/java.text.DecimalFormat. html); the locale-string is an optional argument that provides the name of th xsl:decimal-format element used t i t f the l d i l f t l t d to interpret th f t the formatt string

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

97

Referenz und Probe Tutorial zu XPATH: p // / p / p http://www.w3schools.com/xpath/default.asp Probieren Sie XPATH-Ausdrcke mit den xpath-explorer-xpe.jar (steht zur Verfgung auf der Vorlesungsseite)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

98

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XML - Kernstandards und -technologien

(Quelle: Thrnert, U Leipzig)

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

99

XSL-T steht fr Transformation Warum Transformation? cross media publishing: single source multiple media g y handling von dynamischen webseiten data integration web services Wo findet die Transformation statt? xml/browser + xsl/browser html/browser xml/webserver + xsl/webserver html/browser xml/other + xsl/other html/webserver html/browser xml/??? + xsl/??? other_format/other_device Womit kann ich transformieren? XSLT-Transformator von Visual Studio A Apacheparser XALAN (hat auch commandline interface) h (h t h dli i t f ) (http://xml.apache.org/xalan-j/index.html) SAXON (http://saxon.sourceforge.net/) B Browser (siehe: http://www.w3schools.com/xsl/xsl_browsers.asp) ( i h htt // 3 h l / l/ l b )
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
100

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XSLT- Funktionsweise

Unterschiedliche XML-Quelldokumente => unterschiedliche Ergebnisdokumente > t hi dli h E b i d k t Unterschiedliche Stylesheets => unterschiedliche E hi dli h Ergebnisdokumente b i d k

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

101

Beispiel: XML Dokument


<?xml version="1.0"?> <!-- Ein einfache Liste von Bueroartikel --> <?xml-stylesheet type="text/xsl" href="book.xslt"?> <artikelliste> <artikel category="Ordner"> <hersteller>Leitz</hersteller> <name>Ordner</name> <price currency="EURO">3.95</price> </artikel> <artikel category="Locher"> <hersteller>Coperate Express</hersteller> <name>Locher</name> <price currency="EURO">9 95</price> currency="EURO">9.95</price> </artikel> <artikel category="Tacker"> <hersteller>Classic</hersteller> <name>Tacker</name> <price currency="EURO">7.90</price> </artikel> </artikelliste>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
102

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beispiel: XSLT- Stylesheet (book.xslt)


<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="artikelliste"> <HTML><BODY>Ein einfache Liste von Bueroartikel: <TABLE border="1"><xsl:apply-templates/></TABLE> </BODY></HTML> / p </xsl:template> <xsl:template match="artikel"> <TR><xsl:apply-templates/></TR> </xsl:template> <xsl:template match="hersteller | name | price"> <TD><h1><xsl:apply-templates/></h1></TD> / p </xsl:template> </xsl:stylesheet>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
103

Beispiel: Erzeugtes HTML-Dokument


<HTML> <BODY>Ein einfache Liste von Bueroartikel: <TABLE border="1"> <TR><TD><h1>Leitz</h1></TD> <TD><h1>Ordner</h1></TD> <TD><h1>3.95</h1></TD> </TR> <TR><TD><h1>Coperate Express</h1></TD> p p <TD><h1>Locher</h1></TD> <TD><h1>9.95</h1></TD> / </TR> <TR><TD><h1>Classic</h1></TD> <TD><h1>Tacker</h1></TD> <TD><h1>7.90</h1></TD></TR> </TABLE></BODY> </HTML>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
104

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beispiel: Ausgabe

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

105

Beispiel: XSLT- Stylesheet 2


<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> p g <xsl:template match="artikelliste"> <HTML> <BODY style=" background-color: rgb(255, 255, 102)"> Ein i f h Li t Ei einfache Liste von Bueroartikel: B tik l <TABLE border="12"> <xsl:apply-templates /> </TABLE> </BODY> </HTML> </xsl:template> <xsl:template match="artikel"> <TR> <xsl:apply-templates /> </TR> </xsl:template> p price"> <xsl:template match="hersteller | name | p <TD> <h1 style=" font-family: apple chancery;"> <xsl:apply-templates /></h1></TD> </xsl:template> </xsl:stylesheet>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
106

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Beispiel: Ausgabe 2

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

107

Beispielbaum fr unsere Transformationen


<?xml version="1.0"?> <?xml-stylesheet type="text/xml" href="18-2.xsl"?> <PERIODIC_TABLE> <ATOM STATE="GAS"> <NAME>Hydrogen</NAME> <SYMBOL>H</SYMBOL> <ATOMIC_NUMBER>1</ATOMIC_NUMBER> <ATOMIC_WEIGHT>1.00794</ATOMIC_WEIGHT> <BOILING_POINT UNITS="Kelvin">20.28</BOILING_POINT> <MELTING_POINT UNITS="Kelvin">13.81</MELTING_POINT> <DENSITY UNITS="grams/cubic centimeter"> <!-- At 300K, 1 atm --> 0.0000899 </DENSITY> </ATOM> <ATOM STATE="GAS"> <NAME>Helium</NAME> <SYMBOL>He</SYMBOL> <ATOMIC_NUMBER>2</ATOMIC_NUMBER> <ATOMIC_WEIGHT>4.0026</ATOMIC_WEIGHT> <BOILING_POINT UNITS="Kelvin">4.216</BOILING_POINT> <MELTING_POINT UNITS="Kelvin">0.95</MELTING_POINT> / <DENSITY UNITS="grams/cubic centimeter"><!-- At 300K --> 0.0001785 </DENSITY> </ATOM> / </PERIODIC_TABLE>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
108

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Generelle Vorbereitung fr Transformationen Vorbereitung in xml-datei:

<?xml version="1.0"?> (alternativ:"text/xml") <?xml-stylesheet type="text/xsl" href="xslfile.xsl"?>

Deklaration in xslt-datei (xslfile.xsl ):

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl http://www.w3.org/1999/XSL/Transform > xmlns:xsl="http://www w3 org/1999/XSL/Transform"> </xsl:stylesheet>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
109

xsl:template

Nach match kommt ein (einfacher) XPATH-Ausdruck (Muster) Ein Template wird angewendet auf alle Ausdrcke, die mit dem Muster bereinkommen

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

110

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xsl:template match="/"> <html> <head> </head> <body> b d </body> </html> </xsl:template>

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

xsl:apply-templates <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> mlns sl "http // 3 org/1999/XSL/Transform"> <xsl:template match="/"> <html> <xsl:apply-templates/> / </html> </xsl:template> <xsl:template match="PERIODIC_TABLE"> <body> <xsl:apply-templates/> </body> </xsl:template> p <xsl:template match="ATOM"> An Atom </xsl:template> </xsl:stylesheet>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
111

Benutzung des select-Attributs

<xsl:template match="ATOM"> <xsl:apply templates select= NAME /> <xsl:apply-templates select="NAME"/> </xsl:template>

Mit select-Attribut: l t Att ib t whle nur die Knoten aus, die mit dem XPATH-Ausdruck korrespondieren (Resultat: eine Knotenliste), und versuche die Templates auf die Elementen der Knotenliste anzuwenden

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

112

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Ohne select-Attribut: betrachte erneut den ganzen XML-Baum und versuche die Templates anzuwenden

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

xsl:value-of

<xsl:template match="ATOM"> <xsl:value-of select="NAME"/> </xsl:template>


Fge an dieser Stelle den Wert des selektierten Knoten (Knotenliste) ein Der Wert eines Knotens ist:
Node Type: Root Element Value: The value of the root element The concatenation of all parsed character data contained in the element, including character data in any of the descendants of the element The text of the node; essentially the node itself The normalized attribute value as specified by Section 3.3.3 of the XML 1.0 recommendation; basically the attribute value after entities are resolved and leading and trailing white space is stripped; does not include the name of the attribute, the equals sign, or the q , q g , quotation marks The URI of the namespace The data in the processing instruction; does not include the processing instruction , <? or ?> The text of the comment, <!-- and --> not included
113
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Text Attribute

Namespace Processing instruction Comment

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

xsl:for-each

<xsl:template match="PERIODIC_TABLE"> <xsl:apply templates select= ATOM /> <xsl:apply-templates select="ATOM"/> </xsl:template> <xsl:template match="ATOM"> <xsl:value-of select="."/> </xsl:template>
oder alternativ mit for-each:

<xsl:template match="PERIODIC_TABLE"> <xsl:for-each select="ATOM"> <xsl:value-of select="."/> </xsl:for-each> </xsl:template> </ l t l t >
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
114

Defaultregeln in XSLT-Prozessoren Verarbeite rekursiv alle Elementknoten des Baumes:

<xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template>


Kopiere Text von Input nach Output:
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xsl:template match="text()|@*"> p <xsl:value-of select="."/> </xsl:template>


Tu nichts bei processing instructions und Kommentare

<xsl:template match="processing-instruction() match processing instruction() |comment()"/>

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

115

Das kleinstmglichste Stylesheetdokument

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> l l "h // 3 /1999/ / f " </xsl:stylesheet>


Dies kopiert PCDATA von Input nach Output ohne jegliche Markup. Merke dass Defaultregeln eine sehr niedrige Prioritt haben und leicht Merke, berstimmt werden knnen durch andere Regeln. z.B. S ll l Stelle leere O Output sicher: h

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"></xsl:template> </xsl:stylesheet> /xsl:stylesheet


Vorlesung Web Engineering DHBW Stuttgart Campus Horb
116

Weitere Steuerung des Outputs eines Stylesheets {} formt Input-Elementwerte als Output-Attributwerte um

xsl:element platziert ein Element in die Output* p p xsl:attribute platziert ein Attribut in die Output* * wo Name oder Wert des Elementes/Attributs von der Input abhngig ( y g ) ist (sonst kann man es einfach "hndisch" im Stylesheet einfgen) xsl:attribute-set gruppiert Attribute
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

xsl:processing-instruction platziert eine processing Instruction in die Output xsl:comment xsl:text platziert ein Kommentar in die Output platziert text in die Output

xsl:copy, xsl:copy-of p Quellknote in die Output. Attribute und p kopiert die Q Kindelemente werden nicht automatisch mitkopiert! xsl:number zhlt Knoten xsl:sort sl so t sortiert O tp t so tie t Output
117

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

{} {} ist die Fassung von "xsl:value-of" um Input-Elementwerte als Output-Attributwerte umzuformen. <xsl:template match="ATOM"> <ATOM NAME="{NAME}" _ _ ATOMIC_WEIGHT="{ATOMIC_WEIGHT}" ATOMIC_NUMBER="{ATOMIC_NUMBER}" /> / p </xsl:template> <xsl:template match="DENSITY"> <BULK_PROPERTY <BULK PROPERTY NAME="DENSITY" ATOM="{../NAME}" VALUE="{normalize-space(.)}" VALUE="{normalize space( )}" UNITS="{@UNITS}" /> </xsl:template> / l l
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
118

xsl:element xsl:element platziert ein Element in die Output wo Name oder Wert des p gg (sonst kann man das Element Elementes von der Input abhngig ist ( einfach "hndisch" im Stylesheet einfgen) Beispiel:

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

119

xsl:attribute xsl:attribute platziert ein Attribut in die Output wo Name oder Wert des p gg (sonst kann man das Attribut Attributs von der Input abhngig ist ( einfach "hndisch" im Stylesheet einfgen) Beispiel:

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

120

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xsl:template match="ATOM"> <LI><A> <xsl:attribute name="HREF"> <xsl:value-of select="SYMBOL"/>.html </xsl:attribute> </ l tt ib t > <xsl:value-of select="NAME"/> </A></LI> /A /LI </xsl:template>

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xsl:template match="ATOM"> <xsl:element name="{@STATE}"> <NAME><xsl:value-of select="NAME"/></NAME> <!-- rules for other children --> </xsl:element> </ l l t> </xsl:template>

xsl:attribute-set xsl:attribute-set gruppiert Attribute


<xsl:attribute-set name="cellstyle"> <xsl:attribute name="font-family"> New York, Times New Roman, Times, serif </xsl:attribute> <xsl:attribute name="font-size">12pt</xsl:attribute> </xsl:attribute-set> </ l tt ib t t>

Dieses Template wird dann folgendermaen benutzt:


Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

<xsl:template match="ATOM"> l l h " O " <tr> <td xsl:use-attribute-sets="cellstyle"> <xsl:value-of select= NAME /> <xsl:value of select="NAME"/> </td> <td xsl:use-attribute-sets="cellstyle"> <xsl:value of select ATOMIC_NUMBER /> <xsl:value-of select="ATOMIC NUMBER"/> </td> </tr> </xsl:template>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

121

xsl:copy, xsl:copy-of
<!-- identity transformation) --> <xsl:template match="*|@*|comment()|processing-instruction()|text()"> <xsl:copy> <xsl:apply-templates select="*|@*|comment()|processing-instruction()|text()"/> </xsl:copy> </xsl:template> <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl http://www.w3.org/1999/XSL/Transform > xmlns:xsl="http://www w3 org/1999/XSL/Transform"> <xsl:template match="/PERIODIC_TABLE"> <PERIODIC_TABLE> <xsl:apply-templates select="ATOM"/> </PERIODIC_TABLE> </xsl:template> <xsl:template match="ATOM"> <xsl:apply templates select MELTING_POINT /> <xsl:apply-templates select="MELTING POINT"/> </xsl:template> <xsl:template match="MELTING_POINT"> <xsl:copy-of select=".."/> </xsl:template> </xsl:stylesheet>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
122

Programmier-Konstrukte xsl:variable definiert benannte Konstante xsl:call-template l ll t l t ruft zur Ausfhrung eines benannten Template xsl:param bergibt einem Template Parameter b b l xsl:with-param holt die Parameter fr ein Template ab xsl:if g g bedingte Ausfhrung xsl:choose xsl:when xsl:otherwise
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Pendant fr das case-Statement in Programmiersprachen

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

123

xsl:variable xsl:variable definiert benannte Konstante Beispiel:

<xsl:variable name="copy01"> i Copyright 2001 Elliotte Rusty Harold </xsl:variable>


wird benutzt:

<BLOCK COPYRIGHT="{$copy01}"> </BLOCK>

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

124

Templateaufrufe und Parameterbergabe


<xsl:template name="ATOM_CELL"> <xsl:param name="file">index.html</xsl:param> <td> <font face="Times, serif" color="blue" size="2"> <b> <a href="{$file}"><xsl:value-of select="."/></a> </b> </font> </td> </xsl:template> Aufruf: <xsl:template match="ATOMIC_NUMBER"> <xsl:call template name="ATOM CELL"> <xsl:call-template name ATOM_CELL > <xsl:with-param name="file">atomic_number.html</xsl:with-param> </xsl:call-template> </xsl:template>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

125

xsl:if

<xsl:template match="ATOM"> <xsl:value-of select="NAME"/> <xsl:if test="position()!=last()">, </ l if> < l if t t " iti ()! l t()"> </xsl:if> </xsl:template>
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

126

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

xsl:choose
<xsl:template match="ATOM"> <xsl:choose> <xsl:when test="@STATE='SOLID'"> <P style="color: black"> style= color: black > <xsl:value-of select="."/> </P> </xsl:when> <xsl:when t t "@STATE 'LIQUID'" l h test="@STATE='LIQUID'"> <P style="color: blue"> <xsl:value-of select="."/> </P> </xsl:when> <xsl:when test="@STATE='GAS'"> <P style="color: red"> <xsl:value-of se ect . / s : a ue o select="."/> </P> </xsl:when> <xsl:otherwise> <P style="color: green"> style= color: green > <xsl:value-of select="."/> </P> </xsl:otherwise> </xsl:choose> / l h </xsl:template>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
127

Importieren, Inkludieren, Einbetten


Importieren, Inkludieren von Stylesheets in das aktuelle Stylesheet: xsl:import (import hat hhere Prioritt) xsl:include (include hat gleiche Prioritt)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:include href="genealogy.xsl"/> <xsl:import href="standards.xsl"/> <!-- other child elements follow --> </xsl:stylesheet>

Einbetten von Stylesheet in XML:


<?xml version="1.0"?> <?xml-stylesheet type="text/xml" href="#mystyle" ?> <PERIODIC_TABLE> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" id="mystyle"> ... </xsl:stylesheet> / l t l h t ...
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
128

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Fr weiteres Studium und Referenz Obiges und weiteres (elemente und Funktionen) finden Sie in Tutorial http://www.w3schools.com/xsl/default.asp Referenz http://www.w3schools.com/xsl/xsl_w3celementref.asp http://www.w3schools.com/xsl/xsl_functions.asp http://www w3schools com/xsl/xsl functions asp

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

129

Formatierungsalternativen HTML + CSS Ausgabe XML + CSS Ausgabe XML + XSLT XML/HTML + CSS Ausgabe XML/HTML + XSLT XSL-FO Ausgabe (
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Transformation von XSL-FO zu Ausgabe (rendering) mit einem FO-Processor: Apache FOP http://xmlgraphics.apache.org/fop/ http://xmlgraphics apache org/fop/
Output formats currently supported include PDF, PCL, PS, SVG, XML (area tree representation), Print, AWT, MIF and TXT. The primary output target is PDF
Vorlesung Web Engineering DHBW Stuttgart Campus Horb
130

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

XSL:FO Beispiel (Darstellung Inhalt einer e-Mail in einer Tabelle, zeilenweise) <fo:table> <fo:table-column column-width="160mm"/> <fo:table-body> <fo:table body> <xsl:for-each select="message/body/line"> <fo:table-row> <fo:table-cell> <fo:block font-size="11pt" space-before.optimum="0pt text-align="left" font-family="Times New Roman" margin left 0.5cm linefeed treatment preserve margin-left="0.5cm" linefeed-treatment="preserve" white-space-collapse="false" white-space treatment="preserve"> / <xsl:value-of select="content" /> </fo:block> </fo:table-cell> </fo:table-row> </xsl:for-each> </fo:table-body> </fo:table>
Vorlesung Web Engineering DHBW Stuttgart Campus Horb

131

Aufgabe Schreiben Sie eine XSLT-Datei, die als Input die Periodentafel der , g chemischen Elemente nimmt, und als Ausgabe eine HTML-Datei produziert, in dem die Elemente in Form einer Tabelle aufgefhrt sind: Name, Nr, usw. Versuchen Sie eine Ausgabe mit anderer Sortierung der Elemente als Tabellenzeilen (z.B. alphabetisch nach Name) Konstruieren Sie eine Ausgabe fr Ihre Kontaktdaten aus frhere Aufgaben
Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW

Vorlesung Web Engineering DHBW Stuttgart Campus Horb

132

Verffentlichung dieser Folien auerhalb der DHB ist untersagt BW