xml – schema (dtd)

132
XML – Schema (DTD)

Upload: sawyer

Post on 19-Jan-2016

93 views

Category:

Documents


0 download

DESCRIPTION

XML – Schema (DTD). Übersicht. Über XML Was ist XML? Welche Ziele werden verfolgt? XML – Dokumente Wohlgeformtheit Namensräume. Übersicht. XML – Schema Aufbau einer DTD XML - Schema Anwendungsbeispiel: XML-Schema für dieses Proseminar. Über XML. - Was ist XML?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: XML – Schema (DTD)

XML – Schema (DTD)

Page 2: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

2

Übersicht

Über XML– Was ist XML?– Welche Ziele werden verfolgt?

XML – Dokumente– Wohlgeformtheit

Namensräume

Page 3: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

3

Übersicht

XML – Schema– Aufbau einer DTD– XML - Schema

Anwendungsbeispiel:– XML-Schema für dieses Proseminar

Page 4: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

4

Über XML

- Was ist XML?

Die XML (Extensible Markup Language) ist eine Grammatik, die XML-Dokumente beschreibt.

Über die Regeln der XML hinaus, können weitere formuliert werden, und zwar in einem XML-Dokument selbst. Die XML-Grammatik wird in diesem Fall erweitert.

Da die zusätzlichen Regeln in der XML-Grammatik vorgenommen werden, spricht man bei XML auch von einer Metagrammatik.

Page 5: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

5

Über XML

- Welche Ziele werden verfolgt?

1. XML soll sich im Internet auf einfache Weise nutzen lassen.

2. XML soll ein breites Spektrum von Anwendungen unterstützen.

3. XML soll zu SGML kompatibel sein.

4. Es soll einfach sein, Programme zu schreiben, die XML-Dokumente verarbeiten.

5. Die Anzahl optionaler Merkmale in XML soll minimal sein, idealerweise Null.

Page 6: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

6

Über XML

- Welche Ziele werden verfolgt?

6. XML-Dokumente sollten für Menschen lesbar und angemessen verständlich sein.

7. Der XML-Entwurf sollte zügig abgefasst werden.

8. Der Entwurf von XML soll formal und präzise sein.

9. XML-Dokumente sollten leicht zu erstellen sein.

10. Knappheit von XML-Markup ist von minimaler Bedeutung.

Page 7: XML – Schema (DTD)

XML – Schema (DTD)

XML - Dokumente

Page 8: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

8

XML - Dokumente

Definition: A data object is an XML document if it is well-formed, as defined in this specification. A well-formed XML document MAY in addition be valid if it meets certain further constraints.

[http://www.w3.org/TR/2004/REC-xml11-20040204/]

Page 9: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

9

XML – Dokumente (Wohlgeformtheit)

Definition: A textual object is a well-formed XML document if:

• Taken as a whole, it matches the production labeled document.

• It meets all the well-formedness constraints given in this specification.

• Each of the parsed entities which is referenced directly or indirectly within the document is well-formed.

Page 10: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

10

Produktionsregel für ein Dokument:

document ::= prolog element Misc*

- Char* RestrictedChar Char*;

XML - Dokumente

Enthält Informationen über das Dokument

Wurzelelement - enthält Informationen des Dokuments

Kommentare Verarbeitungshinweise

Page 11: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

11

XML - Dokumente

Allgemeines:

• XML ist case-sensitive

• Namen:

Man sollte sich an die üblichen Konventionen halten.

Namen dürfen nicht mit einer Schreibweise von XML beginnen.

Der Doppelpunkt sollte nicht verwendet werden.

Page 12: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

12

XML - Dokumente

Allgemeines:

• Folgende Zeichen dürfen ausschließlich für markup verwendet werden: ", ', <, >, &

Anstelle von ihnen kann &quot; , &apos; , &lt; , &gt, &amp; verwendet werden.

Page 13: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

13

XML - Dokumente

Allgemeines:

• Inhalte von CDATA-Abschnitten, Kommentaren und processing instructions werden nicht interpretiert. D.h. die oben genannten Zeichen können dort verwendet werden. Der Inhalt wird, außer bei Kommentaren, unverändert an die verarbeitende Anwendung weitergegeben.

• Deklaration eines CDATA Abschnittes:

<!CDATA[ [Inhalt] ]]>

Das Fragment ]]> darf nicht im Inhalt vorkommen

Page 14: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

14

XML - Dokumente

Allgemeines:

• Deklaration eines Kommentars:

<!-- [Kommentar] -->

Die Zeichenkette -- darf nicht im Kommentar vorkommen.

• Deklaration einer processing instruction:

<? [Bezeichner der Anwendung] [Anweisung] ?>

Page 15: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

15

Produktionsregel für ein Dokument:

document ::= prolog element Misc*

- Char* RestrictedChar Char*;

XML - Dokumente

Enthält Informationen über das Dokument

Page 16: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

16

XML - Dokumente

Prolog:

• Kann am Anfang eine Angabe zur XML-Version enthalten.

• Kann Angaben über den Dokumenttyp enthalten.

• Kann Kommentare und processing instructions enthalten. (MISC)

Page 17: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

17

Produktionsregel für ein Dokument:

document ::= prolog element Misc*

- Char* RestrictedChar Char*;

XML - Dokumente

Kommentare Verarbeitungshinweise

Page 18: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

18

XML - Dokumente• Angabe zur XML-Version:

<?xml version = "1.1" encoding = "UTF-8"

standalone="yes" ?>Versionsnummer

Zeichensatz (optional)

Gibt einen Hinweis, ob es Verweise auf externe Quellen gibt (optional)

Page 19: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

19

XML - Dokumente• Angabe zum Dokumententyp:

<!DOCTYPE [Name] [Verweis auf externe Quelle] [Deklarationen] >

[Name] muss mit dem Namen des Wurzelelementes übereinstimmen.

[Deklaration] enthält die Deklarationen einer DTD

(interne Deklaration)

Page 20: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

20

XML - Dokumente• Angabe zum Dokumententyp:

<!DOCTYPE [Name] [Verweis auf externe Quelle] [Deklarationen] >

[Verweis auf externe Quelle] hat folgendes Format:

SYSTEM "[URI]" oder

PUBLIC "[öffentlicher Bezeichner] [URI]"

Page 21: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

21

XML - Dokumente• Bsp.:

<!DOCTYPE wurzel PUBLIC "-//ich//dtd//de""http://www.meins.de/

wurzel.dtd">

oder

<!DOCTYPE wurzel SYSTEM" http://

www.meins.de/wurzel.dtd">

Page 22: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

22

Produktionsregel für ein Dokument:

document ::= prolog element Misc*

- Char* RestrictedChar Char*;

XML - Dokumente

Wurzelelement - enthält Informationen des Dokuments

Page 23: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

23

XML - Dokumente

Elemente können leer sein, oder

Zeichenreferenzen (&#x132),

Entityreferenzen (&text;),

Text,

weitere Elemente enthalten.

Zudem können Attribute angegeben werden.

Page 24: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

24

XML - Dokumente

Ein leeres Element:

<[Name] [Attribute] />

Element mit Inhalt:

<[Name] [Attribute] >

[Inhalt]

</[Name]>

Der Name im Start-Tag und im End-Tag müssen identisch sein. Sie geben den Typ des Elementes an.

Page 25: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

25

XML - Dokumente

Darstellung von Attributen:

[Attributname] = "[Wert]"

Attribute können nur in Start-Tags oder leeren Elementen stehen, und dürfen dort nur einmal erscheinen.

Page 26: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

26

XML - Dokumente

Bsp.:

<crlf />

Bsp.:

<anfang xml:lang="de" echt = "wahr">

</anfang>

Page 27: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

27

XML - Dokumente

Korrekte Verschachtelung:

Das Wurzelelement ist Inhalt von keinem anderen Element – es ist einmalig.

Für jedes Nicht-Wurzelelement existiert ein anderes Element, dessen Inhalt es ist, Elter genannt. Es ist aber kein Inhalt von einem weiteren Element, das ebenfalls Inhalt des Elters ist.

Die Elemente- Hierarchie ist ein Baum

Page 28: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

28

XML - Dokumente

Bsp.:

<?xml version = "1.0" ?><person geschlecht = "m">

<vorname>Hans</vorname><nachname>Meier</nachname>

</person>

Page 29: XML – Schema (DTD)

XML – Schema (DTD)

Namensräume

Page 30: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

30

Namensräume

Elemente mit gleichen Namen könnten unterschiedliche Bedeutung haben.

• Ununterscheidbarkeit für verarbeitende Anwendung

• Namenskonflikte

Lösung: Namensräume

Page 31: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

31

Namensräume

Namensräume werden in dem Element festgelegt, in dem sie gelten sollen.

<element xmlns:[Präfix] = "[IRI]">

</element>

Page 32: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

32

Namensräume

Die Namen von Elementen und Attributen, sowie die Attributwerte werden zu qualified names (QNames) erweitert.

Dieser besteht aus dem Namensraumbezeichner und dem lokalen Namen, die beide durch einen ":" betrennt sind.

Page 33: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

33

Namensräume

Bsp.:

<stadt>

<bauten:bank xmlns:bauten = "http://bauten.de/dtd"><bauten:eigentuemer bauten:person="nein">

Geld eG</bauten:eigentuemer>

</bauten:bank>

<moebel:bank xmlns:moebel = "http://mobilar.de/park" />

</stadt>

Page 34: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

34

Namensräume

Es können beliebig viele Namensräume deklariert werden.

IRIs müssen sich unterscheiden, da sonst ihre Namensräume als identisch angesehen werden.

Page 35: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

35

Namensräume

Es kann ein Namensraum als Default-Namensraum festgelegt werden, d.h. einen Namensraum, dem alle Elemente zugeordnet werden, die nicht ausdrücklich einem Namensraum zugeordnet sind.

Default-Namensraum:

<element xmlns="[IRI]">

Attribute müssen einem Namensraum immer explizit zugeordnet werden.

Page 36: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

36

Namensräume

Bsp.:

<stadt>

<bank xmlns= "http://bauten.de/dtd"><eigentuemer person="nein">

Geld eG</eigentuemer>

</bank>

<moebel:bank xmlns:moebel = "http://mobilar.de/park" />

</stadt>

Page 37: XML – Schema (DTD)

XML – Schema (DTD)

Aufbau einer DTD

Page 38: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

38

Aufbau einer DTD

Die "document type definition" legt den Dokumenttyp fest.

Sie ist eine Grammatik für eine Klasse von Dokumenten.

Diese Definition schränkt somit die Menge möglicher XML - Dokumente ein, indem sie den Aufbau des Dokumentes angibt. Entspricht das Dokument den Vorgaben der DTD, so wird es als gültig ("valid") bezeichnet.

Page 39: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

39

Aufbau einer DTD

Vorteile:

• allen Dokumenten liegt eine vorgegebene Struktur zugrunde

• es liegt ein gewisser Grad an Einheitlichkeit vor

• Dokumente sind leichter zu verarbeiten

Page 40: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

40

Aufbau einer DTD

Folgendes lässt sich in einer DTD deklarieren:• Elemente• Attributlisten für Elementen• Entities• Notationen

Eine Dokumententyp-Definition kann intern (in dem XML-Dokument) oder extern (in einer separaten Datei) erfolgen.

Zwischen den einzelnen Deklarationen sind Kommentare und "processing instructions" erlaubt.

Page 41: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

41

Aufbau einer DTD (Elemente)

Deklaration von Elementen:

<!ELEMENT [Name] [Inhalt] >

Der Name des Elementes gibt den Elementtyp an.

Er muss den allgemeinen Regeln für Namen entsprechen.

Jeder Elementtyp darf nur einmal deklariert werden.

In diesem Abschnitt wird mit einem Element eine Instanz des Elementtyps bezeichnet

Page 42: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

42

Aufbau einer DTD

Deklaration von Elementen:

<!ELEMENT [Name] [Inhalt] >

Deklaration von leeren Elementtypen:

<!ELEMENT [Name] EMPTY>

Bsp.:

<!ELEMENT crlf EMPTY>

Page 43: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

43

Aufbau einer DTD

Deklaration von Elementen:

<!ELEMENT [Name] [Inhalt] >

Deklaration von Elementtypen, die Text enthalten können:

<!ELEMENT [Name] (#PCDATA) >

Page 44: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

44

Aufbau einer DTD

Deklaration von Elementen:

<!ELEMENT [Name] [Inhalt] >

Deklaration von Elementtypen, die jedes beliebige in der DTD deklarierte Element in beliebiger Reihenfolge und Anzahl enthalten können:

<!ELEMENT [Name] ANY >

Elemente dieses Elementtyps dürfen auch Text enthalten.

Page 45: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

45

Aufbau einer DTD

Deklaration von Elementen, die neben Text nur eine eingegrenzte Menge an Elementtypen enthalten dürfen:

<!ELEMENT [Name] (#PCDATA | [Typ a] | .. | [Typ x])>

Jeder Typ darf nur einmal in der Deklaration erscheinen. Ansonsten ist die Anzahl der Typen nicht beschränkt.

Ein Element darf von jedem angegebenen Typ beliebig viele Elemente in beliebiger Reihenfolge enthalten.

Sonderfall: Element, dass nur Text enthält.

Page 46: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

46

Aufbau einer DTD• Notation einer Reihung (Sequenz):

([Typ 1], [Typ 2] , .. , [Typ n])

Die Elemente der angegeben Typen müssen in der Reihenfolge stehen, in der sie notiert werden.

Jeder Typ muss so oft vorkommen, wie angegeben.

Typen dürfen mehrfach erscheinen.

Die Reihung darf nicht leer sein.

• [Typ x] kann ein Elementtyp aber auch wieder eine Reihung oder eine Liste von Alternativen sein.

Page 47: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

47

Aufbau einer DTD• Notation einer Liste von Alternativen:

([Alternative a] | [Alternative b] | .. | [Alternative x])

An Stelle der Liste darf eine der Alternative stehen.

Jede Alternative darf nur einmal erscheinen.

Die Liste darf nicht leer sein.

• Eine Alternative kann sowohl ein Element als auch eine Reihung sein.

Page 48: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

48

Aufbau einer DTD• Angaben zur Häufigkeit der Vorkommen:

[Typ] [Häufigkeit]

• bei keiner Angabe muss genau ein Element vorkommen.

• '?' bedeutet, dass ein Element vorkommen darf (optional 0/1)

• '+' bedeutet, dass mindestens ein Element vorkommen muss. Nach oben ist die Anzahl nicht beschränkt. (1..n)

Page 49: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

49

Aufbau einer DTD• Angaben zur Häufigkeit der Vorkommen:

[Typ] [Häufigkeit]

• '*' bedeutet, dass beliebig viele Elemente dieses Typs vorkommen dürfen, auch kein Element.(0..n)

[Typ] kann auch eine Reihung oder Alternativliste sein.

Page 50: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

50

Aufbau einer DTD

Deklaration von Elementen, die nur ausgewählte Elemente in vorgegebener Reihenfolge und Anzahl beinhalten. (Kein Text!):

<!ELEMENT [Name] [Kinder]>

[Kinder] ist dabei entweder eine Reihung, eine Liste von Alternativen, oder ein Elementtyp.

Trotz der beliebigen Schachtelung von Reihungen und Alternativlisten kann der Inhalt des Elementes nur aus weiteren Elementen (und Entities) bestehen.

Page 51: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

51

Aufbau einer DTD (Entities)

Es gibt folgende Arten von Entities:

• interne und externe

• analysierte (parsed) und nicht analysierte (unparsed)

• Entities und Parameter-Entities

Deklaration von Entities:

<!ENTITY [%]? [Name] [Inhalt]>

Page 52: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

52

Aufbau einer DTD

Als interne (Parameter-)Entities werden diejenigen bezeichnet, die ihre Ersetzung direkt in ihrer Definition angeben. Die Ersetzung kann aus Text und (Parameter-) Entities-Referenzen bestehen, das Entity darf sich aber nicht selbst referenzieren.

Bsp.:

<!ENTITY aussage "Er rief: &Ruf;">

Page 53: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

53

Aufbau einer DTD

Externe (Parameter-)Entities verweisen auf einen Inhalt, der sich außerhalb der Datei befindet, in der sie definiert werden.

Der Verweis besteht entweder aus einer URI oder einem öffentlichen Bezeichner (public identifier) und einer URI.

Bsp.:

<!ENTITY ruf SYSTEM "http://../ruf.xml">

<!ENTITY ruf PUBLIC "_//..//..//.." SYSTEM "http://.../ruf.xml">

Page 54: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

54

Aufbau einer DTD

Nur externe Entities können nicht analysierte (unparsed) Entities sein.

Der Inhalt von nicht analysierten Entities wird nicht weiter ausgewertet, sondern lediglich an die verarbeitende Anwendung mitsamt der dazugehörigen Notation weitergegeben.

Jedes Entity, dass nicht ein nicht analysiertes Entity ist, ist ein analysiertes Entity.

Page 55: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

55

Aufbau einer DTD

In der Definition wird an die Quellenangabe das Schlüsselwort "NDATA" und ein Name angehängt. Dieser gibt den Namen der zugehörigen Notation an.

Bsp.:

<!ENTITY bild SYSTEM "http://.."

NDATA [Formatname]>

Page 56: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

56

Aufbau einer DTD

Parameter-Entities können nur innerhalb einer externen DTD verwendet werden.

Im Gegensatz zu Entities können sie Nichtterminalsymbole enthalten und zur Strukturierung der DTD eingesetzt werden.

Bei der Deklaration wird dem Namen ein %-Zeichen voran gestellt.

Mit einer Parameter-Entity-Referenz kann auf das Entity zugegriffen werden.

%[Name];

Page 57: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

57

Aufbau einer DTD

Bsp.:

<!ENTITY % farben SYSTEM "../farben.dtd" >

%farben;

(Hiermit wird der gesamte Inhalt der angebenen DTD importiert.)

Bsp.:

<!ENTITY % person "name , vorname">

<!ELEMENT angestellter (%person; , gehalt)>

Page 58: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

58

Aufbau einer DTD

Für jedes XML-Dokument gibt ein Dokument-Entity.

Dieses hat keinen Namen.

Sein Inhalt ist das XML-Dokument selbst. Es dient als Anfangspunkt bei der Auswertung des Dokumentes.

Page 59: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

59

Aufbau einer DTD (Notationen)

Notationen:

Zu jedem nicht analysierten Entity muss es eine Notation geben, die den Namen trägt, der bei der Deklaration angegeben wurde.

Die Notation enthält Information über das Format des Entity-Inhalts und wird, wenn ein nicht analysiertes Entity referenziert wird, neben dem Inhalt dieses Entitys übergeben.

Page 60: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

60

Aufbau einer DTD

Deklaration von Notationen:

<!NOTATION [Name] [Quellenangabe] >

Die Quellenangabe kann eine URI und/oder ein öffentlicher Bezeichner sein, über die man Angaben über das Format enthält.

Bsp.:

<!NOTATION BMP PUBLIC "+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN" >

Page 61: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

61

Aufbau einer DTD (Attributlisten)

Mit Hilfe von Attributlisten können Elementen um zusätzliche Informationen erweitert werden, die nicht zum Inhalt zählen sollen.

Jede Attributliste bezieht sich immer nur auf ein Element.

Jedoch kann es mehrere Attributlisten geben, die sich auf ein und dasselbe Element beziehen. In diesem Fall werden alle Attributlisten vereinigt.

Page 62: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

62

Aufbau einer DTD

Deklaration von Attributlisten:

<!ATTLIST [Name] ([Attributname] [Attributtyp] [Attribut-Vorgabe])*>

[Name] ist der Name des Elementes, das die Attributliste enthalten soll.

Page 63: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

63

Aufbau einer DTD

Eine Attributliste besteht aus mehreren Attributen.

Jedes Attribut hat einen Namen und einen Attributtyp.

Es gibt folgende Attributtypen:

• ID

• IDREF und IDREFS

• ENTITY und ENTITIES

• CDATA

• NMTOKEN und NMTOKENS

• NOTATIONS

Page 64: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

64

Aufbau einer DTD• ID:

Durch ein Attribut dieses Typs kann ein Element im gesamten XML-Dokument eindeutig identifiziert werden.

Für jedes Element darf es maximal nur ein Attribut von diesem Typ geben.

Ein ID-Attribut muss mit "#REQUIRED" oder "#IMPLIED" gekennzeichnet sein.

Page 65: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

65

Aufbau einer DTD• IDREF:

Attribute dieses Typs verweisen auf ein anderes Element.

Der Wert eines IDREF-Attributes muss mit dem Wert des ID-Attributs eines Elementes im XML-Dokument übereinstimmen.

• IDREFS:

Es gilt das gleiche wie für IDREF, nur sind mehrere Angaben von IDs möglich, die durch Leerzeichen von einander getrennt werden.

Page 66: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

66

Aufbau einer DTD• ENTITY:

Attributen dieses Typs kann ein Entity zugeordnet werden, das in der DTD definiert wurde.

• ENTITIES:

Attributen dieses Typs können mehrere Entities zugeordnet werden, die durch Leerzeichen von einander getrennt werden.

Page 67: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

67

Aufbau einer DTD• CDATA (character data):

Attribute dieses Typs können normalen Text aufnehmen, der den XML-Regeln entsprechen muss.

Page 68: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

68

Aufbau einer DTD• NMTOKEN:

Der Attributtyp entspricht einem String-Datentyp, der aus Buchstaben, Ziffern,".", ":", "-", oder "_" besteht.

• NMTOKENS:

Der Attributtyp kann mehrere Zeichenketten enthalten, die jeweils dem Typ NMTOKEN entsprechen müssen, und die durch Leerzeichen getrennt sein müssen.

Page 69: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

69

Aufbau einer DTD• NOTATION:

Als Werte für diesen Attributtyp sind Namen von Notationen erlaubt, die in der DTD deklariert sind.

Die zum Wert zugehörige Notation gibt an, wie das Element zu interpretieren ist, das dieses Attribut beinhaltet.

Möglichen Werte, die ein Attribut dieses Typs annehmen kann, müssen aufgezählt werden.

([Notation a] | [Notation b] | .. | [Notation x])

Page 70: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

70

Aufbau einer DTD• vorgegebene Alternativen:

Auch für Attribute des Typs NMTOKEN kann die Menge der zulässigen Werte vorgegeben werden.

Page 71: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

71

Aufbau einer DTD• Vorgaben für Attribute:

Für jedes Attribut muss eine Vorgabe vorliegen.

• Mit "#REQUIRED" gekennzeichnet man Attribute, die bei jedem Element angegeben werden müssen.

•"#IMPLIED" bedeutet, dass das Attribut wahlweise angegeben werden kann.

• Es kann ein Default-Wert angegeben werden.

• Soll dieser immer angenommen werden, so muss ihm ein "#FIXED" vorangestellt werden.

Page 72: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

72

Aufbau einer DTD

Bsp.:

<!ENTITY % jn "(ja | nein)" >

<!ELEMENT Rezept (Zutat+ , Zubereitung) >

<!ATTLIST Rezeptnr ID #REQUIREDkoch IDREFS #IMPLIEDbild ENTITY #IMPLIEDbemerkung CDATA #IMPLIEDbio %jn; #FIXED "ja"xml:lang NMTOKEN "de">

Page 73: XML – Schema (DTD)

XML – Schema (DTD)

XML - Schema

Page 74: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

74

XML - Schema

Man kann auch XML-Dokumenttypen in XML-Schema definieren.

Vorteile:

• Jedes XML-Schema ist selbst ein XML-Dokument, so dass im Gegensatz zur DTD keine spezielle Syntax verwendet wird, die separate Werkzeuge zur Verarbeitung erfordert. Insbesondere lässt sich jedes XML-Schema wiederum durch ein XML-Schema validieren, ohne dass eine weitere Metaebene benötigt wird.

Page 75: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

75

XML - Schema

Vorteile:

• Auch komplexe Integritätsbedingungen sind formulierbar.

• XML-Schema enthält eine große Zahl vordefinierter Datentypen und ermöglicht die Definition von eigenen Datentypen, wodurch eine Typprüfung möglich wird.

• Bei Datentypen werden Vererbung und Substitution unterstützt.

• Nullwerte sind, wie bei Referenzen und in Datenbanken üblich, darstellbar.

Page 76: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

76

XML - Schema

Vorteile:

• Das Modularisieren und Wiederverwenden von XML-Schemata ist möglich.

• Benennungskonflikte können durch Verwendung von XML-Namensräumen vermieden werden.

• Die gültige Struktur eines XML-Dokumentes lässt sich leichter erfassen, da XML-Schemata eine bessere Strukturierung zulassen.

Page 77: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

77

XML - Schema

Namensraum für XML-Schema:

http://www.w3.org/2001/XMLSchema

Deklarationen und Definitionen erfolgen innerhalb des schema-Elements.

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

[Dekl. & Def.]

</xsd:schema>

Page 78: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

78

XML - Schema

Namensraum für weitere wichtige Bestandteile, die im XML-Dokument verwendet werden können:

http://www.w3.org/2001/XMLSchema-instance

Gewöhnlich wird dieser Namensraum xsi genannt, der für das XML-Schema xsd.

Page 79: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

79

XML – Schema (DT-Angabe)

Ein Dokument, gibt das Schema, das es verwendet durch die Angabe des Namensraums an.

Bsp.:

<?xml version = "1.1" encoding = "UTF-8" ?><ms:postfach xmlns:ms = "http://www.post.de/schema">

<ms:brief>...

</ms:brief></ms:postfach>

Page 80: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

80

XML - Schema

Der Namensraum enthält aber keine Angaben über den Ort, an dem das Schema abgelegt ist.

xsi:schemaLocation =" ([Namensraum] [URI])* "

ordnet Namensräumen die Adresse ihre XML-Schemata zu.

xsi:noNamespaceSchemaLocation =" [URI] "

ordnet dem Default-Namensraum eine URI zu, unter dem das zugehörige XML-Schema zu finden sein sollte.

Page 81: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

81

XML - Schema

Bsp.:

<?xml version = "1.1" encoding = "UTF-8" ?><ms:postfach xmlns:ms = "http://www.post.de/schema"

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

xsi:schemaLocation = " ms http://www.post.de/schema/postfach.xsd"><ms:brief>

...</ms:brief>

</ms:postfach>

Page 82: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

82

XML - Schema

Jedem Schema sollte ein Namensraum zugeordnet werden.

Dazu dient das Attribut targetNamespace des schema-Elements.Bsp.:

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

targetNameSpace = "http://www.meinschema.de">...

</xsd:schema>

Page 83: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

83

XML – Schema (Elemente)

Deklaration von Elementen:

<xsd:element name = "[Name]" type = "[Typ]" />

Page 84: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

84

XML – Schema (Datentypen)

Man unterscheidet

• komplexe Typen (können Attribute und weitere Elemente beinhalten)

• einfache Typen (einfache Datentypen)

Page 85: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

85

XML - Schema

Vordefinierte einfache Datentypen:

• zeichenorientierte (string, ..)

• numerische (byte, integer, decimal, ..)

• logische (boolean)

• zeitorientierte (time, date, gYear, ..)

• XML 1.0 Typen (ID, IDREF, ENTITY, ..)

Diese Datentypen sollten mit dem Namensraum des XML-Schemas gekennzeichnet werden:

type = "xsd:integer"

Page 86: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

86

XML – Schema (complexType)

Definition von komplexen Typen:

<xsd:complexType name = "[Name]">

[Deklaration von Elementen]

[Deklaration von Attributen]

</ xsd:complexType>

Attribut-Deklarationen finden am Ende einer komplexen Typ-Definition statt.

Page 87: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

87

XML – Schema (all)

Die all-Gruppe:

Alle Elemente, die in der all-Gruppe deklariert sind, dürfen in beliebiger Reihenfolge instanziiert werden, aber höchstens einmal.

Außerhalb der all-Gruppe darf es keine weiteren Element-Deklarationen geben.

<xsd:all>

[Elementdeklarationen]

</xsd:all>

Page 88: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

88

XML – Schema (sequence)

Sequenzen:

Die Inhalte einer Sequenz müssen in der Reihenfolge erscheinen, in der sie angegeben werden.

<xsd:sequence>

[Inhalt 1]

...

[Inhalt n]

</xsd:sequence>

Page 89: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

89

XML – Schema (choice)

Auswahllisten:

Von den aufgeführten Inhalten muss ein frei wählbarer instanziiert werden:

<xsd:choice>

[Inhalt a]

...

[Inhalt x]

</xsd:choice>

Page 90: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

90

XML - Schema

Auswahllisten und Sequenzen können beliebig geschachtelt werden.

Neben der Anordnung kann auch die Häufigkeit festgelegt werden, mit der Elemente erscheinen dürfen.

minOccurs gibt an, wie oft ein Element mindestens erscheinen muss (default 1; Angabe optional).

maxOccurs gibt an, wie oft ein Element höchstens auftreten darf (default 1; ∞ = unbounded;Angabe optional).

default gibt den Wert an, der dem Element zugeordnet wird, wenn es vorhanden, aber leer ist.

Page 91: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

91

XML - Schema

Für Elemente gibt es die Möglichkeit einen null-Wert anzuzeigen.

Diese erscheinen im XML-Dokument, können aber entgegen der Vorgaben keinen Inhalt enthalten, wohl aber Attribute.

Schema:

<xsd:element name ="[Name]" type = "[Typ]"

nillable = "true" />

Dokument:

<ms:[Name] xsi:nil="true"></[Name]>

Page 92: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

92

XML – Schema (Content)

Bei komplexen Definitionen kann man den Inhalt festlegen:

<xsd:simpleContent>

[keine Elemente, aber CDATA]

</xsd:simpleContent>

<xsd:complexContent>

[nur Elemente]

</xsd:complexContent>

Page 93: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

93

XML – Schema (Content)

Das Attribute mixed = "true" gibt an, ob zwischen den Elementen Text erlaubt ist.

<xsd:complexType mixed = "true"> ...

Page 94: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

94

XML - Schema

Anonyme Typdefinition:

Bei der Deklaration eines Elementes wird das Attribut type nicht angegeben. Dafür erfolgt die Definition im Inhaltsbereich des Elementes:

<xsd:element name="">

<xsd:complexType>

[Element- und Attributdeklarationen]

</xsd:complexType>

</xsd:element>

Page 95: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

95

XML - Schema

Ist bei einem Element kein Typ angegeben, aber folgt auch keine unmittelbare Typdefinition, so erhält das Attribut type den Wert xsi:anyType und das Element kann jeden Typ aufnehmen.

Page 96: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

96

XML – Schema (Attribute)

Deklaration von Attributen:

<xsd:attribute name = "[Name]" type = "[einfacher Typ]" />

Attribute können nur einfache Datentypen aufnehmen.

In einem Element darf es keine zwei Attribute mit gleichen Namen geben.

Page 97: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

97

XML - Schema

Weitere Angaben bei der Deklaration von Attributen:

Das Attribut use gibt an, wie oft das Attribut vorkommen soll. Erlaubte Werte:

required: genau einmal

optional: ein oder keinmal

prohibited: keinmal

Das Attribut default gibt den Vorgabewert des Attributs an, den das Attribut erhält, wenn es nicht angegeben wird. use muss in dem Fall den Wert optional haben.

Page 98: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

98

XML - Schema

Weitere Angaben bei der Deklaration von Attributen:

Das Attribut fixed gibt an welchen Wert das Attribut haben muss. Wenn das Attribut nicht angegeben wird, erhält es automatisch diesen Wert.

fixed und default dürfen nicht gleichzeitig vorkommen.

Bsp.:

<xsd:attribute name = "breite" type = "decimal" use = "optional" default = "2">

Page 99: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

99

XML – Schema (attributeGroup)

Attributdeklarationen können zu Gruppen zusammen gefasst werden.

<xsd:attributeGroup name = "[Name]">

[Attribut-Deklarationen oder Attributgruppen-Referenzen]

</xsd:attributeGroup>

Einbindung der Attribute erfolgt mit:

<xsd:attributeGroup ref = "[Name]" />

Page 100: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

100

XML – Schema (group)

Auch Elemente können zu Gruppen zusammengefasst werden:

<xsd:group>

[Element-Deklarationen]

</xsd:group>

Bei den Element-Deklarationen können Sequenzen und Auswahllisten verwendet werden.

Page 101: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

101

XML - Schema

Global deklarierte Elemente und Attribute können mit ref referenziert werden. Sie erhalten dann den gleichen Namen und Typ.

Bsp.:

<xsd:element ref="[Name]" minOccurs = "0" />

Page 102: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

102

XML – Schema (globale Dekl.)

Elemente und Attribute, die direkt als Kind von schema deklariert werden, sind globale Elmente oder Attribute.

Sie dürfen keine Referenzen enthalten, müssen also direkt einem einfachen oder komplexen Typ zugeordnet werden.

Sie dürfen keine Angaben über die Häufigkeit ihres Erscheinens enthalten.

Sie alle können direkt instanziiert werden, d.h. Wurzelelemente sein.

Page 103: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

103

XML - Schema

Für jedes lokale Attribut oder Element kann vorgeschrieben werden, ob bei ihrer Verwendung ihr Namensraum angegeben werden muss oder kann.

form = " [( qualified | unqualified )] "

Der Vorgabewert ist unqualified.

Für die Festlegung eines Vorgabewertes für alle lokalen Elemente oder Attribute gibt es die Attribute elementFormDefault und attributeFormDefault des schema-Elements. Diese Angaben können durch form überdeckt werden.

Page 104: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

104

XML - Schema

Bsp.:

<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:targetNameSpace = "http://www.meinschema.de"elementFormDefault = "qualified"><xsd:element name="auto">

<xsd:complexType><xsd:element name = "batterie" type="xsd:string" form = "unqualified" />...

Page 105: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

105

XML – Schema (Neue Typen)

Eigene Datentypen aus bereits Vorhandenen erstellen durch:

• Einschränkung

• Erweiterung

• Vereinigung

Page 106: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

106

XML – Schema (Einschränken)

Einfache Datentypen: Typen einschränken

<xsd:simpleType name ="[Name]">

<xsd:restriction base= "[Typ]">

[Einschränkungen]

</xsd:restriction>

</xsd:simpleTyp>

Page 107: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

107

XML - Schema

Einschränkungen haben folgende Form:

<xsd:[Bezeichner] value = "[Wert]" />

Page 108: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

108

XML - Schema

Es gibt folgende Einschränkungen:

minInclusive: Der Wert des neuen Typs muss größer-gleich dem angegebenen Wert sein.

maxInclusive: Der Wert des neuen Typs muss kleiner-gleich dem angegebenen Wert sein.

minExclusive: Der Wert des neuen Typs muss größer dem angegebenen Wert sein.

maxExclusive: Der Wert des neuen Typs muss kleiner dem angegebenen Wert sein.

Page 109: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

109

XML - Schema

totalDigits: Der Wert darf insgesamt maximal so viele Stellen aufweisen (nur für Dezimaltypen).

fractionDigits:Der Wert darf maximal so viele Nachkommastellen haben (nur für Dezimaltypen).

pattern: Der Wert des neuen Typs muss dem angegebenen regulären Ausdruck entsprechen.

enumeration: Gibt genau einen gültigen Wert an.Der Wert des neuen Ausdrucks muss gleich einem aufgezählten Wert sein.

Page 110: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

110

XML - Schema

length: Der Wert muss so viele Zeichen oder Elemente aufweisen.

minLength: Der Wert muss aus mindestens so vielen Zeichen oder Elementen bestehen.

maxLength: Der Wert darf aus maximal so vielen Zeichen oder Elementen bestehen.

whiteSpace: Bedeutung steht noch nicht fest. Wert ist festgelegt (fixed) auf collapse. Es gibt auch noch preserve und replace.

Page 111: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

111

XML - Schema

Bsp.:

<xsd:simpleType name = "nummernschild" ><xsd:restriction base = "xsd:string" >

<xsd:pattern value="[A-Z]{2}\-[A-Z]{2}\-[0-9]{4}"/>

</xsd:restriction></xsd:simpleType>

Page 112: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

112

XML - Schema

Bsp.:

<xsd:simpleType name = "prim10" ><xsd:restriction base = "xsd:integer" >

<xsd:enumeration value="2"/><xsd:enumeration value="3"/><xsd:enumeration value="5"/><xsd:enumeration value="7"/>

</xsd:restriction></xsd:simpleType>

Page 113: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

113

XML – Schema (Erweitern)

Einfache Datentypen: Typen erweitern

Listen von Datentypen definieren:

<xsd:simpleType name = "intlist" >

<xsd:list itemType = "xsd:integer" />

</xsd:simpleType>

Dokument:

<ms:lottozahlen>3 7 27 30 38 42</ms:lottozahlen>

Page 114: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

114

XML – Schema (Vereinen)

Einfache Datentypen: Typen erweitern

Vereinigung von Datentypen definieren:

<xsd:simpleType name = "union" >

<xsd:union memberType = "prim10 boolean" />

</xsd:simpleType>

Page 115: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

115

XML – Schema (Einschränken)

Komplexe Datentypen: Typen einschränken

Nur die Häufigkeit, mit der deklarierte Elemente erscheinen können, kann eingeschränkt werden.

Die Deklarationen aller Elemente müssen wiederholt werden, die der Attribute nicht.

Page 116: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

116

XML - Schema

Bsp.:

<xsd:complexType name = "rezept"><xsd:element name = "zutat" type = "zutaten" maxOccurs = "unbounded" /><xsd:element name = "zubereitung" type = "anleitung" />

</xsd:complexType >

Page 117: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

117

XML - Schema

<xsd:complexType name = "schnellrezept"><xsd:complexContent>

<xsd:restriction base="rezept"><xsd:element name = "zutat" type = "zutaten" maxOccurs = "20" /><xsd:element name = "zubereitung" type = "anleitung" />

</xsd:restriction></xsd:complexContent>

</xsd:complexType >

Page 118: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

118

XML – Schema (Erweitern)

Komplexe Datentypen: Typen erweitern

Neue Deklarationen können hinzugefügt werden.

Bestehende Deklarationen und Hinzugefügte werden als Sequenz aufgefasst.

Page 119: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

119

XML - Schema

Bsp.:

<xsd:element name = "internationalPrice" ><xsd:complexType>

<xsd:simpleContent><xsd:extension base = "xsd:decimal" >

<xsd:attribute name = "currency" type = "xsd:string"/> </xsd:extension>

</xsd:simpleContent> </xsd:complexType>

</xsd:element>

Page 120: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

120

XML - Schema

Bsp.:<xsd:element name = "Mofa">

<xsd:complexType> <xsd:complexContent>

<xsd:extension base = "fahrrad"><xsd:element

name = "motor"type = "xsd:string" /></xsd:extension>

</xsd:complexContent> </xsd:complexType>

</xsd:element>

Page 121: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

121

XML - Schema

Existieren mehrere Typen, die von einander abgeleitet sind, muss mit dem Attribut xsi:type = "[Name]" in der Instanz des Elements der Typ angegeben werden.

Typen können durch abstarct = "true" als abstrakt definiert werden. Dass bedeutet, dass es von ihnen keine Instanzen geben darf. Nur von den abgeleiteten Typen darf es Instanzen geben, diese müssen ebenfalls den Typ angeben.

Von abstrakten Typen muss es mindestens eine Ableitung geben.

Page 122: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

122

XML - Schema

Das Ableiten von Typen kann durch das Attribut final eingeschränkt werden.

final = "restriction": Der Typ kann nicht eingeschränkt werden.

final = "extension": Der Typ kann nicht erweitert werden.

final = "#all": Der Typ kann weder eingeschränkt noch erweitert werden.

Page 123: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

123

XML - Schema

Das Attribut block verhindert, dass von einem Typ abgeleitete Typen an Stelle von ihm benutzt werden können.

block = "restriction": Kein eingschränkter Typ von ihm kann an seiner Stelle verwendet werden.

block = "extension": Kein erweiterter Typ von ihm kann an seiner Stelle verwendet werden.

block = "#all": Weder ein eingschränkter Typ noch ein erweiterter Typ von ihm kann an seiner Stelle verwendet werden.

Page 124: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

124

XML - Schema

Vorgabewerte für das final Attribut aller Elemente eines Schemas können durch das optionale Attribut finalDefault des schema-Elements festgelegt werden.

Vorgabewerte für das block Attribut aller Elemente eines Schemas können durch das optionale Attribut blockDefault des schema-Elements festgelegt werden.

Page 125: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

125

XML - Schema

Das Attribut fixed macht Einschränkungen unveränderlich.

Bsp.:

<xsd:simpleType name = "lottozahlen" ><xsd:restriction base = "xsd:intlist" >

<xsd:length value="6" fixed = "true" /></xsd:restriction>

</xsd:simpleType>

Page 126: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

126

XML - Schema

Inhalte anderer Schemata zum neuen Schema hinzufügen:

<include schemaLocation = "[URI]" />

Beide Schemata, das, das eingebunden wird, und das, das ergänzt wird, müssen den gleichen Namensraum haben.

Die Elemente des eingebundenen Schemas können nicht verändert werden.

Page 127: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

127

XML - Schema

Inhalte anderer Schemata ableiten:

<redefine schemaLocation = "[URI]">

[Typen ableiten]

</redefine>

Die abgeleiteten Typen werden dabei überschrieben.

Page 128: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

128

XML - Schema

Definitionen aus einem anderen Namensraum einbinden:

<import namespace = "[Namensraum]" schemaLocation="[URI]" />

Das Attribut schemaLocation ist optional.

Nur global definierte komplexe Typen können importiert werden.

Solch ein Ausdruck muss als erster im Schema auftauchen, vor Deklarationen und Definitionen.

Page 129: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

129

XML - Schema

Man kann auch XML-Dokumenttypen in XML-Schema definieren.

Vorteile:

• Jedes XML-Schema ist selbst ein XML-Dokument, so dass im Gegensatz zur DTD keine spezielle Syntax verwendet wird, die separate Werkzeuge zur Verarbeitung erfordert. Insbesondere lässt sich jedes XML-Schema wiederum durch ein XML-Schema validieren, ohne dass eine weitere Metaebene benötigt wird.

Page 130: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

130

XML - Schema

Vorteile:

• Auch komplexe Integritätsbedingungen sind formulierbar.

• XML-Schema enthält eine große Zahl vordefinierter Datentypen und ermöglicht die Definition von eigenen Datentypen, wodurch eine Typprüfung möglich wird.

• Bei Datentypen werden Vererbung und Substitution unterstützt.

• Nullwerte sind, wie bei Referenzen und in Datenbanken üblich, darstellbar.

Page 131: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

131

XML - Schema

Vorteile:

• Das Modularisieren und Wiederverwenden von XML-Schemata ist möglich.

• Benennungskonflikte können durch Verwendung von XML-Namensräumen vermieden werden.

• Die gültige Struktur eines XML-Dokumentes lässt sich leichter erfassen, da XML-Schemata eine bessere Strukturierung zulassen.

Page 132: XML – Schema (DTD)

Proseminar Auszeichnungssprachen WS04/05XML - Schema (DTD)

132

Anwendungsbeispiel

Und zum Schluss:

Ein XML-Schema für dieses Proseminar.