• Keine Ergebnisse gefunden

DTDs DTDs und und XML XML - - Schemata

N/A
N/A
Protected

Academic year: 2022

Aktie "DTDs DTDs und und XML XML - - Schemata"

Copied!
72
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

DTDs DTDs und und XML XML - - Schemata

Schemata

(2)

Heutige Vorlesung Heutige Vorlesung

letzte Woche letzte Woche

;; XMLXML--SyntaxSyntax

;; NamensrNamensrääumeume heute

heute

ƒ Definition von XML-Sprachen

ƒ DTDs und XML-Schema anhand eines einheitlichen Beispiels

nänächste Wochechste Woche

ƒ XML-Schema im Detail

(3)

Motivation Motivation

<book>b

<ttitle>My Life and Times</ttitle>

<authors>authors

<aauthor>

<first>Paul</firstfirst first>

<last>McCartney</last last> last

</aauthor>

</authorsauthors>

<ddate>

<yearyear>1998</yearyear>

<monthmonth>July</monthmonth>

</ddate>

<isbnisbn>94303-12021-43892</isbn>isbn

<ppublisher>McMillin Publishing</ppublisher>

</bbook>

<Book>

<Title>My Life and Times</Title>

<Author>Paul McCartney</Author>

<Date>July, 1998</Date>

<ISBN>94303-12021-43892</ISBN>

<Publisher>McMillin Publishing</Publisher>

</Book>

oder so?

so?

Ö einheitliches Format nötig Ö Format sollte durch XML- Prozessor validierbar sein

(4)

Spezifische Formate Spezifische Formate

<Book>

<Title> PCDATA </Title>

<Author> PCDATA </Author>

<Date> PCDATA </Date>

<ISBN> PCDATA </ISBN>

<Publisher> PCDATA

</Publisher>

</Book>

ƒƒ prinzipieller Aufbau von prinzipieller Aufbau von Dokumenten

Dokumenten: Welche Elemente/Attribute dürfen wo verwendet werden?

ƒƒ Datentypen der Inhalte: Datentypen der Inhalte Welche Inhalte sind

erlaubt?

ƒ konkrete Inhalte werden nicht beschrieben ÖKlasse von erlaubten XML-Dokumenten

ƒ auch DokumentDokument-Typ-Typ, XMLXML--Sprache, Sprache AnwendungAnwendung von von

(5)

Dokument

Dokument -Typ - Typ

Klasse von erlaubten XML-Dokumenten

= XML-Sprache

= Content Modell Klasse

Objekt Objekt

Objekt

Dokument-Typ

XML-Dokument XML-Dokument

XML-Dokument Klasse

Klasse

Objekt Objekt

Objekt Objekt

Objekt Objekt

Dokument-Typ Dokument-Typ

XML-Dokument XML-Dokument

XML-Dokument XML-Dokument

XML-Dokument XML-Dokument

ƒ Dokument-Typ kann mit einer DTD, einem XML-

Schema oder ähnlichen Formalismen definiert werden.

(6)

DTDs DTDs vs. vs. XML XML - - Schema Schema

DTD‘s XML-Schema

vereinfachte SGML-DTD, Teil von XML 1.0/1.1

eigener W3C-Standard

eigene Syntax XML-Schemta = XML-Sprache

kompakter und lesbarer ausdrucksstärker

zur Beschreibung von Text- Dokumenten ausreichend

zur Beschreibung von Daten besser geeignet.

(7)

Document

Document Type Type Definitions

Definitions ( ( DTDs DTDs ) )

(8)

Wie sieht eine DTD hierf

Wie sieht eine DTD hierfü ü r aus? r aus?

<BookStore>

<Book>

<Title>My Life and Times</Title>

<Author>Paul McCartney</Author>

<Date>July, 1998</Date>

<ISBN>94303-12021-43892</ISBN>

<Publisher>McMillin Publishing</Publisher>

</Book>

</BookStore>

ƒ BookStore soll mindestens ein Buch enthalten.

ƒ ISBN optional

(9)

Die DTD f

Die DTD fü ü r das Beispiel- r das Beispiel - Dokument Dokument

<!ELEMENT BookStore (Book+)>

<!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)>

<!ELEMENT Title (#PCDATA)>

<!ELEMENT Author (#PCDATA)>

<!ELEMENT Date (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>

<!ELEMENT Publisher (#PCDATA)>

ähnelt einer regulären Grammatik

<!ELEMENT

<!ELEMENT Name ContentName Content--ModellModell>>

Element-Deklaration

(10)

DTDs DTDs : :

Element

Element - - Deklaration Deklaration

(11)

Datentypen

Datentypen für Element-Inhalte

verschiedene Datentypen:

1.1. Element: Element mit speziellen Symbolen + * | ?Element 2.2. #PCDATA: unstrukturierter Inhalt ohne reservierte #PCDATA

Symbole < und &.

<!ELEMENT Title (#PCDATA)>

2.2. EMPTY: leerer Inhalt, Element kann aber Attribute habenEMPTY

<!ELEMENT br EMPTY> Î <br/>

3.3. ANY: beliebiger Inhalt (strukturiert, unstrukturiert, ANY gemischt oder leer)

<!ELEMENT title ANY>

Datentypen wie INTEGER oder FLOAT stehen nicht zur Verf

Datentypen wie INTEGER oder FLOAT stehen nicht zur Verfüügung.gung.

(12)

Deklaration von

Deklaration von BookStore BookStore

<!ELEMENT

<!ELEMENT BookStore (Book+)>>

ƒƒ ++ bezeichnet n Wiederholungen mit n > 0.

ƒƒ ** bezeichnet n Wiederholungen mit n ≥ 0.

ƒ BookStore hat mindestens ein Kind-Element Book.

ƒ Außer Book darf BookStore keine anderen Kind- Elemente haben.

<BookStore>

<Book>…</Book>

<Book>…</Book>

</BookStore>

(13)

<!ELEMENT BookStoreBookStore (Book)>

Rekursive Deklarationen

<!ELEMENT BookStoreBookStore (Book | (Book, BookStore))>BookStore

ƒ Bookstore besteht aus genau einer der folg. Alternativen:

- genau ein Kind-Element Book

- zwei Kind-Elemente: Book und BookStore

ƒƒ || bezeichnet AuswahlAuswahl: genau eine der beiden Alternativen

ƒƒ ,, bezeichnet SequenzSequenz von Elementen.

ƒ Beachte: Rekursive Deklaration nicht äquivalent zur vorherigen, iterativen Definition!

(14)

Rekursive vs. iterative Deklaration Rekursive vs. iterative Deklaration

<BookStore>

<Book>…</Book>

<BookStore>

<Book>…</Book>

<BookStore>

<Book>…</Book>

</BookStore>

<BookStore>

<Book>…</Book>

<Book>…</Book>

<Book>…</Book>

</BookStore>

<!ELEMENT BookStore (Book+)>

BookStore mit 3 Büchern

BookStore mit 3 Büchern

(15)

Die DTD f

Die DTD fü ü r das Beispiel- r das Beispiel - Dokument Dokument

<!ELEMENT BookStore (Book+)>

<!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)>

<!ELEMENT Title (#PCDATA)>

<!ELEMENT Author (#PCDATA)>

<!ELEMENT Date (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>

<!ELEMENT Publisher (#PCDATA)>

(16)

Deklaration von

Deklaration von Book Book

<!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)>

ƒ Title, Author, Date, ISBN und

Publisher (in dieser Reihenfolge) Kind-Elemente von Book.

ƒ außer diesen keine anderen Kind-Elemente

<Book>

<Title>…</Title>

<Author>…</Author>

<Date>…</Date>

<ISBN>…</ISBN>

<Publisher>…</Publisher>

</Book>

ƒƒ ?? bedeutet optional

(17)

Die DTD f

Die DTD fü ü r das Beispiel- r das Beispiel - Dokument Dokument

<!ELEMENT BookStore (Book+)>

<!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)>

<!ELEMENT Title (#PCDATA)>

<!ELEMENT Author (#PCDATA)>

<!ELEMENT Date (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>

<!ELEMENT Publisher (#PCDATA)>

(18)

Deklaration von

Deklaration von Title Title etc. etc.

<!ELEMENT Title (#PCDATA)>

<!ELEMENT Author (#PCDATA)>

<!ELEMENT Date (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>

<!ELEMENT Publisher (#PCDATA)>

<Title>My Life and Times</Title>

<Author>Paul McCartney</Author>

<Date>July, 1998</Date>

<ISBN>94303-12021-43892</ISBN>

<Publisher>McMillin Publishing</Publisher>

(19)

Verschachtelungen Verschachtelungen

<!ELEMENT ChapChap (Title, (Para | ChapChap)+)>

<!ELEMENT Para ANY>

<!ELEMENT Title (#PCDATA)>

ƒ Beispiel

ƒ (fast) beliebige Verschachtelung von Sequenz, Auswahl

|, ?, *, + und Rekursion erlaubt

: <Chap>

<Title>Kap1</Title>

<Para>Ein Absatz</Para>

<Chap>

<Title>Kap1.1</Title>

<Para>…</Para>

</Chap>

<Para>…</Para>

<Chap>

<Title>Kap1.2</Title>

<Para>…</Para>

</Chap>

</Chap>

(20)

Einschr

Einschr ä ä nkung der Verschachtelung nkung der Verschachtelung

ƒ Beispiel: ((b, c) | (b b, d)) ist nichtb nicht--deterministischdeterministisch

ƒ Grund: Wenn erstes Element = b, dann kann XML- Prozessor keine der beiden Alternativen ausschließen.

ƒ XML erlaubt nur deterministischedeterministische Content Modelle

ƒ jedes nicht-deterministische Content Modell kann in ein äquivalentes deterministisches umgeformt werden

ƒ Beispiel: ((b, c) | (b b, d)) = (b, (c | d)) b

(21)

DTDs DTDs : :

Attribut

Attribut - - Deklaration Deklaration

(22)

Deklaration von Attributen Deklaration von Attributen

<!ATTLIST

<!ATTLIST BookStore

version CDATA #IMPLIED>>

<!ATTLIST

<!ATTLIST Name Name

AttrName1 AttrTyp1 Attrbeschr1 AttrName1 AttrTyp1 Attrbeschr1 AAttrName2ttrName2 AttrTyAttrTyp2 Ap2 Attrbeschrttrbeschr22

>>

Attribut-

Deklarationen

(23)

Deklaration von Attributen Deklaration von Attributen

<!ATTLIST BookStore

version CDATA #IMPLIED>CDATA

ƒ Element BookStore hat Attribut version.

ƒ Außer version hat BookStore keine weiteren Attribute.

ƒƒ CDATA: Attribut-Wert = String ohne <, & und 'CDATA bzw. "

ƒ Beachte: nicht verwechseln mit <![CDATA[ … ]]>

ƒ daher Entity References für <, & und ' bzw. " verwenden

<BookStore version="1.0">

</BookStore>

(24)

Aufzä Aufz ä hlungstypen hlungstypen

<!ATTLIST Author

gender (male | (male | female)female) "female">

ƒ hier statt CDATA AufzAufzäählungstyp:hlungstyp

ƒ Attribut gender hat entweder Wert male oder female.

ƒ "female" ist Standard-Wert von gender.

(25)

Datentypen f

Datentypen fü ü r Attribute r Attribute

Zusätzlich zu CDATA (Strings) und Aufzählungstypen:

ƒƒ NMTOKEN: String, der Namenskonventionen von XML NMTOKEN entspricht

ƒƒ ID: eindeutiger Bezeichner, der Namenskonventionen von ID XML entspricht

ƒƒ IDREF: Referenz auf einen eindeutigen BezeichnerIDREF

(26)

ID/IDREF ID/IDREF

<!ATTLIST Author

key IDID #IMPLIED

keyref IDREFIDREF #IMPLIED>

ƒ Wert des Attributes key muss eindeutig sein:

Zwei Attribute vom Typ ID dürfen niemals gleichen Wert haben.

ƒ Wert des Attributes keyref muss gültige Referenz sein:

Wert von keyref muss Wert eines Attributes vom Typ ID sein.

(27)

Deklaration von Attributen Deklaration von Attributen

<!ATTLIST

<!ATTLIST BookStore

version CDATA #IMPLIED>>

<!ATTLIST

<!ATTLIST Name Name

AttrName1 AttrTyp1 Attrbeschr1 AttrName1 AttrTyp1 Attrbeschr1 AttrName2 AttrTyp2 Attrbeschr2 AttrName2 AttrTyp2 Attrbeschr2

>>

Attribut-

Deklarationen

(28)

Optionale/erforderliche Attribute Optionale/erforderliche Attribute

<!ATTLIST BookStore

version CDATA #FIXED #FIXED ""1.01.0">"

ƒƒ #FIXED: Attribut hat immer den gleichen Wert. #FIXED

ƒƒ #IMPLIED: Attribut optional#IMPLIED

ƒƒ #REQUIRED: Attribut obligatorisch#REQUIRED

ƒƒ "1.0":"1.0" Standard-Wert des Attributes

(29)

Beispiel Beispiel

<BookStore>

<Book>

<Title>Text</Title>

<Author key="k1">Text</Author>key="k1

<Date>Text</Date>

<Publisher pkey="p1"pkey="p1">Text</Publisher>

</Book>

<Book>

<Title>Text</Title>

<Author keyref="k1"/>keyref="k1"

<Date>Text</Date>

<Publisher pkey="p1"pkey="p1">Text</Publisher>

</Book>

</BookStore>

Wert k1k1 muss eindeutig sein: kein anderes

Attribut vom Typ ID darf diesen Wert

haben.

Referenz k1k1 muss

existieren: ein Attribut vom Typ ID muss den Wert k1k1 haben.

(30)

Festlegung des Dokument

Festlegung des Dokument- -Typs Typs

ƒ direkt nach XML-Deklaration einfügen:

- vollständige DTD oder - Verweis auf externe DTD

<!DOCTYPE

<!DOCTYPE WurzelWurzel--ElementElement SYSTEM "DTDSYSTEM "DTD">">

(31)

Interne DTD Interne DTD

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

<!DOCTYPE

<!DOCTYPE BookStoreBookStore [[

<!ELEMENT BookStore (Book+)>

<!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)>

<!ELEMENT Title (#PCDATA)>

<!ELEMENT Author (#PCDATA)>

<!ELEMENT Date (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>

<!ELEMENT Publisher (#PCDATA)>

]>

]>

<BookStore>

</BookStore>

(32)

Externe DTD Externe DTD

<!DOCTYPE

<!DOCTYPE Wurzel-Wurzel-ElementElement SYSTEM "DTDSYSTEM "DTD">">

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

<!DOCTYPE

<!DOCTYPE BookStoreBookStore SYSTEM "Bookstore.dtdSYSTEM "Bookstore.dtd">">

<BookStore>

</BookStore>

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

<!DOCTYPE

<!DOCTYPE BookBook SYSTEM "Bookstore.dtdSYSTEM "Bookstore.dtd">">

<Book>

</Book>

Dokument-Typ Deklaration

(33)

DTDs DTDs : :

Wohlgeformt & zul

Wohlgeformt & zul ä ä ssig ssig

(34)

Wohlgeformheit

Wohlgeformheit vs. Zulä vs. Zul ässigkeit ssigkeit

wohlgeformt (well

wohlgeformt (well formedformed) )

ƒ XML-Dokument entspricht Syntaxregeln von XML

zulzuläässig (ssig (validvalid) bzgl. einer DTD) bzgl. einer DTD

1. Wurzel-Element des XML-Dokumentes ist in der DTD deklariert und

2. Wurzel-Element hat genau die Struktur, wie sie in der DTD festgelegt ist.

(35)

Pr Pr ü ü fung der Wohlgeformtheit fung der Wohlgeformtheit

(36)

Pr Pr ü ü fung der Zul fung der Zul ä ä ssigkeit ssigkeit

(37)

Nachteile

Nachteile von DTDs

ƒ keine XML-Syntax, eigener Parser nötig

ƒ nur sehr wenige Datentypen, insbesondere für Element- Inhalte

ƒ keine eigenen Datentypen definierbar

ƒ keine Namensräume:

DTDs können nur dann kombiniert werden, wenn es keine Namenskonflikte gibt!

ƒ keine Vererbungshierarchien

(38)

Und noch ein Nachteil Und noch ein Nachteil

ƒ Sequenzen einfach zu definieren:

<!ELEMENT Book (Title, Author)>

Ö starre Struktur in XML-Dokumenten

ƒ soll Reihenfolge der Kind-Elemente egal sein, müssen alle Permutationen explizit aufgezählt werden:

<!ELEMENT Book ((Title, Length) | (Length, Title))>

ƒ nicht praktikabel: bei n Kind-Elementen n! Permutationen

(39)

DTDs Zusammenfassung

DTD deklariert das erlaubte Vokabular DTD deklariert das erlaubte Vokabular DTD definiert f

DTD definiert füür jedes Element ein r jedes Element ein ContentContent--ModellModell

ƒ Content-Modell legt fest:

ƒ Elemente oder Daten

ƒ Reihenfolge & Anzahl von Elementen/Daten innerhalb eines Elements

ƒ Pflicht oder optionale Elemente

DTD deklariert f

DTD deklariert füür jedes Element eine Menge von erlaubten r jedes Element eine Menge von erlaubten Attributen

Attributen

(40)

XML XML - - Schema Schema

(41)

<location>

<latitude>32.904237</latitude>

<longitude>73.620290</longitude>

<uncertainty units="meters">2</uncertainty>

</location>

Warum

Warum XML XML - - Schema Schema ? ?

ƒ Ortsangabe: besteht aus Breitengrad, Längengrad und Unsicherheit.

ƒ Breitengrad: Dezimalzahl zwischen -90 und +90

ƒ Längengrad: Dezimalzahl zwischen -180 und +180

ƒ Unsicherheit: nicht-negative Zahl

ƒ Maßeinheit für Unsicherheit: Meter oder Fuß

DTD XML-Schema

(42)

Vorteile von

Vorteile von XML XML- -Schemata Schemata

+ Vielzahl von vordefinierten Datentypen + eigene Datentypen definierbar

+ keine eigene Syntax, sondern selbst XML-Sprache + Vererbungshierarchien

+ unterstützen Namensräume

+ Reihenfolgeunabhängige Strukturen einfach zu definieren

(43)

Die Beispiel Die Beispiel - - DTD DTD

<!ELEMENT BookStore (Book+)>

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

<!ELEMENT Title (#PCDATA)>

<!ELEMENT Author (#PCDATA)>

<!ELEMENT Date (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>

<!ELEMENT Publisher (#PCDATA)>

(44)

Äquivalentes Ä quivalentes XML XML - - Schema Schema

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.books.org">

<xsd:element name="BookStore">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Book" maxOccurs="unbounded">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Title" type="xsd:string"/>

<xsd:element name="Author" type="xsd:string"/>

<xsd:element name="Date" type="xsd:string"/>

<xsd:element name="ISBN" type="xsd:string"/>

<xsd:element name="Publisher" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:sequence>

ƒ Für jede DTD gibt es ein äquivalentes XML-Schema.

ƒ Übersetzung z.B. mit XMLSpy

ƒ Umgekehrt gibt es jedoch XML- Schemata, für die es keine

äquivalente DTD gibt.

ÎXML-Schemata

(45)

XML- XML - Schemata Schemata

<?

<?xmlxml version="1.0"?>version="1.0"?>

<xsd:schemaxsd:schema xmlns:xsd="http://www.w3.org/2001/xmlns:xsd="http://www.w3.org/2001/XMLSchemaXMLSchema"" …>

</xsd:schema>xsd:schema

ƒ XML-Schemata sind wohlgeformte XML-Dokumente.

ƒ Vorteil: kein eigener Parser nötig

ƒ Nachteil: geschwätzig

ƒ Wurzel-Element: schema aus W3C-Namensraum http://www.w3.org/2001/XMLSchema

ƒ hier XML-Schema für XML-Schema hinterlegt:

Schema der Schemata Schema der Schemata

Namensraum für das schema Element

(46)

Geschw

Geschwä ä tzigkeit von XML tzigkeit von XML- -Schemata Schemata

Bestellung

PurchaseOrder.xml XML-Schema

cXML.xsd

ƒ PurchaseOrder.xml verweist auf cXML-

Schema, das Client von anderen Server laden muss.

ƒ cXML

- als Schema: 50KB - als DTD: 15KB

ƒ XML-Schemata aber

besser zu komprimieren:

- cXML-Schema: 6KB

(47)

Ziel- Ziel -Namensraum Namensraum

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http

targetNamespace="http://www.books.org://www.books.org">"

</xsd:schema>

ƒ jedes XML-Schema definiert bestimmtes Vokabular (Elemente und Attribute).

ƒ Dieses Vokabular wird einem Namensraum zugeordnet:

ZielZiel--NamensraumNamensraum (target namespace).

ƒ Ziel-Namensraum wird wie jeder Namensraum mit URI identifiziert

ƒ Definiertes Vokabular kann über URI identifiziert werden.

(48)

BookStore

Book Title

Author

Date

Publisher ISBN

Ziel- Ziel -Namensraum Namensraum

http://

http://www.books.orgwww.books.org

DTD definiert keinen

Namensraum.

XML-Schema definiert eigenen Namensraum, den Ziel-

Namensraum.

BookStore

Book Title

Author

Date

Publisher ISBN

(49)

Instanz eines

Instanz eines XML XML- - Schemas Schemas

Klasse von erlaubten XML-Dokumenten

= XML-Sprache

= Content Modell Klasse

Objekt Objekt

Objekt

Dokument-Typ

XML-Dokument XML-Dokument

XML-Dokument Klasse

Klasse

Objekt Objekt

Objekt Objekt

Objekt Objekt

Dokument-Typ Dokument-Typ

XML-Dokument XML-Dokument

XML-Dokument XML-Dokument

XML-Dokument XML-Dokument XML-Schema S

Instanzen von S Instanz eines

Instanz eines XMLXML--SchemasSchemas S ist ein XML-Dokument, dasS 1. dem Ziel-Namensraum von S zugeordnet ist und

2. gültig (valid) bzgl. S ist.

(50)

<?xml version="1.0"?>

<BookStore>

<Book>

<Title>My Life and Times</Title>

<Author>Paul McCartney</Author>

<Date>July, 1998</Date>

<ISBN>94303-12021-43892</ISBN>

<Publisher>McMillin Publishing</Publisher>

</Book>

...

</BookStore>

Instanz eines

Instanz eines XML XML- - Schemas Schemas

Wie wird aus diesem XML- Dokument eine Instanz eines

XML-Schemas?

(51)

<?xml version="1.0"?>

<BookStoreBookStore xmlns="http://www.books.org"xmlns="http://www.books.org"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.books.org BookStore.xsd">

</BookStore>BookStore

1. Schritt 1. Schritt

ƒ Wurzel-Element und Namensraum legen zusammen Dokument-Typ fest.

ƒ Wurzel-Element muss in XML-Schema global deklariert sein.

ƒ Für bekannte Namensräume wie

http://www.w3.org/1999/xhtml keine weiteren Schritte nötig.

Ziel-Namensraum des XML-Schemas

(52)

<?xml version="1.0"?>

<BookStore xmlns="http://www.books.org"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation

xsi:schemaLocation="http://www.books.org="http://www.books.org http://

http://www.books.org/BookStore.xsdwww.books.org/BookStore.xsd"">

</BookStore>

2. Schritt 2. Schritt

ƒ Attribut schemaLocation gibt Hinweis, wo das XML- Schema zu finden ist.

ƒ Beachte: XML-Prozessor darf diese Information

kann auch lokale Datei wie z.B.

BookStore.xsd sein

(53)

<?xml version="1.0"?>

<BookStore xmlns="http://www.books.org"

xmlns:xsi

xmlns:xsi="http://www.w3.org/2001/XMLSchema="http://www.w3.org/2001/XMLSchema--instance"instance"

xsi:schemaLocation="http://www.books.orgxsi:

http://www.books.org/BookStore.xsd">

</BookStore>

3. Schritt 3. Schritt

ƒ Attribut schemaLocation stammt aus dem W3C- Namensraum für Schema-Instanzen.

ƒ weiteres Beispiel für Erweiterbarkeit von XML!

ƒ XML durch Attribut schemaLocation erweitert

(54)

Instanz und Schema Instanz und Schema

BookStore.xml BookStore.xsd

targetNamespace="http://www.books.org"

schemaLocation="http://www.books.org BookStore.xsd"

benutzt Namensraum

http://www.books.org definiert Namensraum http://www.books.org

Instanz

Instanz XML XML - - Schema Schema

(55)

Software zum

Software zum Validieren Validieren von Instanzen von Instanzen

ƒ xerces by Apache (API)

Î http://xml.apache.org/

ƒ MSXML (API)

Î http://www.microsoft.com

ƒ XMLSpy (GUI)

Î http://www.altova.com/

ƒ weitere: http://www.w3.org/XML/Schema#Tools

(56)

Validierung auf mehreren Ebenen Validierung auf mehreren Ebenen

BookStore.xml BookStore.xsd

zulässiges BookStore-Dokument?

Instanz

= XML-Dokument XML-Schema

(57)

Validierung auf mehreren Ebenen Validierung auf mehreren Ebenen

BookStore.xml BookStore.xsd XMLSchema.xsd

zulässiges BookStore- Dokument?

Instanz

= XML-Dokument XML-Schema

= XML= XML--DokumentDokument

zuläzulässigesssiges XML-XML-Schema?Schema? Schema der

Schemata

(58)

Validierung auf mehreren Ebenen Validierung auf mehreren Ebenen

BookStore.xml BookStore.xsd XMLSchema.xsd

zulässiges BookStore- Instanz

= XML-Dokument Schema

= XML-Dokument

Schema der Schemata = = XMLXML--

Dokument Dokument

(59)

Deklaration der Element

Deklaration der Element -Struktur - Struktur

<!ELEMENT BookStore (Book+)>

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

<!ELEMENT Title (#PCDATA)>

<!ELEMENT Author (#PCDATA)>

<!ELEMENT Date (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>

<!ELEMENT Publisher (#PCDATA)>

ƒ Wie werden diese Element-Deklarationen mit einem XML-Schema ausgedrückt?

(60)

<xsd:elementxsd:element name="BookStore">

<xsd:complexTypexsd:complexType>

<xsd:sequencexsd:sequence>

<xsd:elementxsd:element name="Book" type="BookType"

minOccurs="1" maxOccurs="unbounded"/>

</xsd:sequence>xsd:sequence

</xsd:complexTypexsd:complexType>

</xsd:element>xsd:element

<!ELEMENT

<!ELEMENT BookStore BookStore (Book+)> (Book+)>

ƒƒ xsd:element: Element xsd:element wird deklariert

ƒƒ xsd:complexType: strukturierter xsd:complexType Inhalt

<BookStore>

<Book>…</Book>

<Book>…</Book>

</BookStore>

(61)

<xsd:element name="BookStore">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Book" type="BookType"

minOccurs

minOccurs="1" maxOccurs="1" maxOccurs="unbounded"="unbounded"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<!ELEMENT

<!ELEMENT BookStore BookStore (Book+)> (Book+)>

ƒƒ minOccurs: minimale Anzahl der WiederholungenminOccurs

ƒƒ maxOccurs: maximale Anzahl der WiederholungenmaxOccurs

ƒ Beachte: Standard-Werte für minOccurs und maxOccurs jeweils 1

<BookStore>

<Book>…</Book>

<Book>…</Book>

</BookStore>

(62)

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

ƒ Kind-Elemente: Title, Author, Date, ISBN und Publisher

ƒ wegen xsd:sequencexsd:sequence: feste Reihenfolge

<xsd:complexType name="BookType">

<xsd:sequencexsd:sequence>

<xsd:elementxsd:element name="Title" type="xsd:string"/>xsd:string

<xsd:elementxsd:element name="Author" type="xsd:string"/>

<xsd:elementxsd:element name="Date" type="xsd:string"/>

<xsd:elementxsd:element name="ISBN" type="xsd:string"/>

<xsd:elementxsd:element name="Publisher" type="xsd:string"/>

</xsd:sequence>xsd:sequence

</xsd:complexType> <Book>

<Title>…</Title>

<Author>…</Author>

<Date>…</Date>

<ISBN>…</ISBN>

<Publisher>…</Publisher>

</Book>

(63)

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

ƒƒ xsd:string: vordefinierter Datentypxsd:string

ƒ 43 weitere vordefinierte Datentypen

<xsd:complexType name="BookType">

<xsd:sequence>

<xsd:element name="Title" type="xsd:stringxsd:string"/>

<xsd:element name="Author" type="xsd:string"/>

<xsd:element name="Date" type="xsd:string"/>

<xsd:element name="ISBN" type="xsd:string"/>

<xsd:element name="Publisher" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType> <Book>

<Title> PCDATAPCDATA </Title>

<Author>…</Author>

<Date>…</Date>

<ISBN>…</ISBN>

<Publisher>…</Publisher>

</Book>

(64)

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>

ƒƒ xsd:date: vordefinierter Datentypxsd:date

<xsd:complexType name="BookType">

<xsd:sequence>

<xsd:element name="Title" type="xsd:string"/>

<xsd:element name="Author" type="xsd:string"/>

<xsd:element name="Date" type="xsd:datexsd:date"/>

<xsd:element name="ISBN" type="xsd:string"/>

<xsd:element name="Publisher" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType> <Book>

<Title> PCDATA </Title>

<Author>…</Author>

<Date>KalenderdatumKalenderdatum </Date>

<ISBN>…</ISBN>

<Publisher>…</Publisher>

</Book>

(65)

<xsd:complexType name="BookTypeBookType">

<xsd:sequence>

<xsd:element name="Title" type="xsd:string"/>

<xsd:element name="Author" type="xsd:string"/>

<xsd:element name="Date" type="xsd:string"/>

<xsd:element name="ISBN" type="xsd:string"/>

<xsd:element name="Publisher" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

Benannte Datentypen Benannte Datentypen

<xsd:element name="Book" type="BookTypeBookType"

minOccurs="1" maxOccurs="unbounded"/>

ƒ BookType hier benannter Datentypbenannter Datentyp (named type)

ƒ auch globale Typglobale Typ--DefinitionDefinition genannt

(66)

<xsd:element name="Book" maxOccurs="unbounded">

<xsd:complexType>

<xsd:complexType>

<xsd:sequence>

<xsd:sequence>

<xsd:element name="Title" type="xsd:

<xsd:element name="Title" type="xsd:string"/>string"/>

<xsd:element name="Author" type="xsd

<xsd:element name="Author" type="xsd:string"/>:string"/>

<xsd:element name="Date" type="xsd:s

<xsd:element name="Date" type="xsd:string"/>tring"/>

<xsd:element name="ISBN" type="xsd:s

<xsd:element name="ISBN" type="xsd:string"/>tring"/>

<xsd:element name="Publisher" type="

<xsd:element name="Publisher" type="xsd:string"/>xsd:string"/>

</xsd:sequence>

</xsd:sequence>

</

</xsd:complexType>xsd:complexType>

</xsd:element>

ƒ äquivalente Formulierung mit anonymen Datentypanonymen Datentyp

ƒ auch als lokale Typlokale Typ--DefinitionDefinition bezeichnet

Alternative: anonyme Datentypen

Alternative: anonyme Datentypen

(67)

<!ELEMENT Book (Title, Author

<!ELEMENT Book (Title, Author++, Date, ISBN, Date, ISBN??, Publisher)>, Publisher)>

ƒ Jedes Elemente erscheint so häufig, wie mit minOccurs und maxOccurs festgelegt.

<xsd:complexType name="BookType">

<xsd:sequencexsd:sequence>

<xsd:element name="Title" type="xsd:string"/>

<xsd:element name="Author" type="xsd:string" maxOccursmaxOccurs="unbounded" ="unbounded" />

<xsd:element name="Date" type="xsd:string"/>

<xsd:element name="ISBN" type="xsd:string" minOccursminOccurs="0"="0"/>

<xsd:element name="Publisher" type="xsd:string"/>

</xsd:sequencexsd:sequence>

</xsd:complexType>

(68)

Das vollst

Das vollstä ä ndige ndige XML- XML -Schema Schema

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.books.org">

<xsd:element name="BookStore">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Book" maxOccurs="unbounded">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Title" type="xsd:string"/>

<xsd:element name="Author" type="xsd:string"/>

<xsd:element name="Date" type="xsd:string"/>

<xsd:element name="ISBN" type="xsd:string"/>

<xsd:element name="Publisher" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

Lernziel: Dieses Schema und die entsprechende

(69)

XML XML Spy: Visualisierung Spy : Visualisierung

(70)

XML XML Spy: Editieren Spy : Editieren

(71)

XML XML Spy: Editieren Spy : Editieren

(72)

Wie geht es weiter?

Wie geht es weiter?

heute heute

; Definition von XML-Sprachen

; DTDs und XML-Schema anhand eines einheitlichen Beispiels

nänächste Wochechste Woche

ƒ XML-Schema im Detail

Referenzen

ÄHNLICHE DOKUMENTE

&lt;!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)&gt;. &lt;!ELEMENT

 Außer Book darf BookStore keine anderen Kind- Elemente haben.. • Beachte: Rekursive Deklaration nicht äquivalent zur vorherigen,

&lt;!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)&gt;.. &lt;!ELEMENT

&lt;!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)&gt;.. &lt;!ELEMENT

&lt;!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)&gt;.. &lt;!ELEMENT

&lt;!ELEMENT Book (Title, Author, Date, ISBN?, Publisher)&gt;. &lt;!ELEMENT

[r]

[r]