Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Geoinformation III Vorlesung 13b XML-Schema.

Ähnliche Präsentationen


Präsentation zum Thema: "Geoinformation III Vorlesung 13b XML-Schema."—  Präsentation transkript:

1 Geoinformation III Vorlesung 13b XML-Schema

2 Vereinigungstypen (Union Types)
2 Vereinigungstypen (Union Types) 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 <xsd:simpleType name=“monatsangabe“> <xsd:union memberTypes=“meinMonatsTyp xsd:positiveInteger“/> </xsd:simpleType> s. V. 13a Folie 19 <monat>Februar</monat> <monat>2</monat> <monat>April</monat> Beispiel für ein Elemente vom Typ <monatsangabe> :

3 Complex Types (I) Benannte komplexe Typen (Named Complex Types)
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)

4 Komplexe Inhalte (Content Models)
4 Komplexe Inhalte (Content Models) <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

5 Beispiel Complex Types und Content Models
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“/>

6 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

7 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 Attribute von Student: Name geerbt von Vorname Person Matrikelnummer } Student Matrikelnummer

8 Ableitung von Typen durch Erweiterung (I)
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“ <element name=“matrikelnr“ type=“positiveInteger“/> </extension> </complexContent> </schema>

9 Ableitung von Typen durch Erweiterung (II)
9 Ableitung von Typen durch Erweiterung (II) <?xml version=“1.0“> <studentenliste xmlns=“http://www.personenregister.de/Personen“> <student> <name>Zupp</name> <vorname>Jupp</vorname> <matrikelnr> </matrikelnr> </student> </studentenliste> Beispiel für ein Instanzdokument mit einer Liste von Studenten: student erbt die Elemente “name“ und “vorname“ von “person“ Erweiterung von “person“ durch eine Matrikelnummer

10 Polymorphie In objektorientierten Programmiersprachen dürfen
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

11 Äquivalenzklassen (substitution groups)
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 Dürfen dort verwendet werden, wo eigentlich ein Element <pers:person> erwartet wird <element name=“student“ type=“studentTyp“ substitutionGroup=“pers:person“/> <element name=“professor“ type=“professorTyp“ <pers:student>Jupp Zupp</pers:student> <pers:professor>Carl Friedrich Gauß</pers:professor>

12 Abstrakte Elemente und Typen
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 “studentTyp“ wird von “personTyp“ abgeleitet (und ist nicht abstrakt). <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> <element name=“person“ type=“pers:personTyp“/> <element name=“student“ type=“pers:studentTyp“/> </schema> “personTyp“ wird als abstrakter Typ definiert. Element “person“ darf nicht im Instanzdokument vorkommen; wohl aber “student“, weil es auf dem abgeleiteten Typ “studentTyp“ basiert.


Herunterladen ppt "Geoinformation III Vorlesung 13b XML-Schema."

Ähnliche Präsentationen


Google-Anzeigen