Geoinformation III

12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Geoinformation 3 Geoinformation III XML-Schema Vorlesung 13b

description

Geoinformation III. Vorlesung 13b. XML-Schema. Februar 2 April. Beispiel für ein Elemente vom Typ :. 2. Vereinigungstypen (Union Types). Vereinigung mehrerer Simple Types - PowerPoint PPT Presentation

Transcript of Geoinformation III

Page 1: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

Geoinformation III

XML-Schema

Vorlesung 13b

Page 2: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

2

• Vereinigung mehrerer Simple Types• Elemente bzw. Attribute eines V.-typen dürfen Werte aus einem

der Wertebereiche der angegebenen Typen haben• zulässig sind:

– atomare Typen– Listentypen– Vereinigungstypen

Vereinigungstypen (Union Types)

<xsd:simpleType name=“monatsangabe“> <xsd:union memberTypes=“meinMonatsTyp xsd:positiveInteger“/></xsd:simpleType>

<monat>Februar</monat><monat>2</monat><monat>April</monat>

Beispiel für ein Elemente vom Typ <monatsangabe> :

s. V. 13a Folie 19

Page 3: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

3

Complex Types (I)

• Benannte komplexe Typen (Named Complex Types)– global definiert– können wiederverwendet werden– Bezeichnung muss ein XML-Name sein

• Unbenannte komplexe Typen (Anonymous Complex Types)– sind nur innerhalb einer Element-Deklaration definiert– können deshalb nie eingeschränkt, erweitert oder redefiniert

werden

• Inhalt von komplexen Typen:– einfacher Inhalt (simpleContent)– komplexer Inhalt (complexContent)

• nur Elemente (element-only content)• gemischter Inhalt (mixed content)• leer (empty content)

Page 4: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

4

• <sequence> . . . </sequence>– alle darin deklarierten Elemente müssen in genau dieser

Reihenfolge im Instanzendokument vorkommen

• <choice> . . . </choice>– genau eines der darin deklarierten Elemente muss im

Instanzendokument vorkommen

• <group> . . . </group>– Gruppiert Deklarationen, die dann über ihren Namen in das Content

Model eingefügt werden können

Komplexe Inhalte (Content Models)

Page 5: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

5

Beispiel Complex Types und Content Models

<xsd:complexType name=“personenTyp“> <xsd:sequence> <xsd:element name=“vorname“ type=“xsd:string“/> <xsd:element name=“name“ type=“xsd:string“/> <xsd:element name=“telefonnummer“> <xsd:complexType> <xsd:choice> <xsd:element name=“telnummerPrivat“ type=“xsd:string“/> <xsd:element name=“telnummerJob“ type=“xsd:string“/> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name=“geburtsdatum“ type=“xsd:date“/> </xsd:complexType>

Page 6: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

6

Verteilte Schemata

• Schemadefinitionen können über mehrere Dokumente verteilt sein Modularisierung, Wiederverwendbarkeit Übersichtlichkeit

• ein Schema wird mittels des <include>-Tags in ein anderes Schema eingebettet:

<include schemaLocation = “http://www.beispiele.de/verteiltes_schema.xsd“/>

• das eingefügte Dokument muss denselben Target Namespace besitzen, d.h. die Definitionen darin werden demselben Namensraum hinzugefügt

• weiterer Möglichkeit mittels <import>, das auch die Verwendung mehrerer Target Namespaces erlaubt

Page 7: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

7

Vererbung

Eine Vererbung, wie sie bei UML möglich ist, erfolgt in XML-Schema mittels

Ableitung eines Typs von einem Basistyp (Oberklasse) durch Erweiterung

Person

Name Vorname

Student

Matrikelnummer

Attribute von Student:

Name geerbt vonVorname PersonMatrikelnummer

}

Page 8: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

8

Ableitung von Typen durch Erweiterung (I)

<schema targetNamespace=“http://www.personenregister.de/Personen“ xmlns=“http://www.w3.org/2001/XMLSchema“ xmlns:pers=“http://www.personenregister.de/Personen“>

<complexType name=“personTyp“> <sequence> <element name=“name“ type=“string“/> <element name=“vorname“ type=“string“/> </sequence> </complexType>

<complexType name=“studentTyp“> <complexContent> <extension base=“pers:personTyp“ <sequence> <element name=“matrikelnr“ type=“positiveInteger“/> </sequence> </extension> </complexContent> </complexType></schema>

Page 9: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

Ableitung von Typen durch Erweiterung (II)

9

<?xml version=“1.0“><studentenliste xmlns=“http://www.personenregister.de/Personen“> <student> <name>Zupp</name> <vorname>Jupp</vorname> <matrikelnr>123456789</matrikelnr> </student></studentenliste>

Beispiel für ein Instanzdokument mit einer Liste von Studenten:

student erbt die Elemente “name“ und “vorname“ von “person“

student erbt die Elemente “name“ und “vorname“ von “person“

Erweiterung von “person“ durch eine

Matrikelnummer

Erweiterung von “person“ durch eine

Matrikelnummer

Page 10: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

10

Polymorphie

• In objektorientierten Programmiersprachen dürfen• Variablen vom Typ einer Oberklasse auch Objekte vom Typ einer

ihrer Unterklassen zugewiesen werden • der Inhalt solcher Variablen kann daher polymorph sein

Beispiel in Java:

class Student extends Person {...}. . .Person p;Student s = new Student(“Jupp“, “Zupp“, 4711);p=s;

• In XML-Schema muss explizit spezifiziert werden, wenn ein Element, dass auf einem spezielleren Typ basiert, im Instanzdokument auch dort vorkommen darf, wo eigentlich ein Element vom Typ der Oberklasse erwartet wird

Page 11: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

10

Äquivalenzklassen (substitution groups)

• Deklaration einer Gruppe austauschbarer Elemente– Elemente der substitution group müssen global deklariert werden – jedes Element dieser Gruppe kann im Instanzdokument ersetzt

werden– jedes Element der substitution group muss vom selben Typ sein wie

das zu substituierende Element oder von dessen Typ abgeleitet werden

<element name=“student“ type=“studentTyp“ substitutionGroup=“pers:person“/><element name=“professor“ type=“professorTyp“ substitutionGroup=“pers:person“/>

<pers:student>Jupp Zupp</pers:student><pers:professor>Carl Friedrich Gauß</pers:professor>

Dürfen dort verwendet werden, wo eigentlich ein Element <pers:person> erwartet wird

Dürfen dort verwendet werden, wo eigentlich ein Element <pers:person> erwartet wird

Page 12: Geoinformation III

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Geoinformation3

11

Abstrakte Elemente und Typen

• Dienen zur Repräsentation übergeordneter abstrakter Konzepte• Elemente mit abstrakten Typen dürfen im Instanzdokument

nicht verwendet werden, nur Mitglied(er) der substitution group

<schema xmlns=“http://www.w3c.org/2001/XML-Schema“ targetNamespace=“http://personen.abstraktebeispiele.de/schema“ xmlns:pers=“http://personen.abstraktebeispiele.de/schema“

<complexType name=“personTyp“ abstract=“true“> ...

</complexType>

<complexType name=“studentTyp“> <complexContent> <extension base=“pers:personTyp“/> ... </complexContent> </complexType>

<element name=“person“ type=“pers:personTyp“/> <element name=“student“ type=“pers:studentTyp“/></schema>

“personTyp“ wird als abstrakter Typ definiert.

“personTyp“ wird als abstrakter Typ definiert.

Element “person“ darf nicht im Instanzdokument vorkommen; wohl aber “student“, weil es auf dem abgeleiteten Typ “studentTyp“ basiert.

Element “person“ darf nicht im Instanzdokument vorkommen; wohl aber “student“, weil es auf dem abgeleiteten Typ “studentTyp“ basiert.

“studentTyp“ wird von “personTyp“ abgeleitet (und ist nicht abstrakt).

“studentTyp“ wird von “personTyp“ abgeleitet (und ist nicht abstrakt).