Semistrukturierte Daten

Ähnliche Dokumente
Semistrukturierte Daten

XML-Schema Datentypen

XSD-Datei(en) Inhalt. Referenzierung eines Schemas ohne Target Namespace VU Semistrukturierte Daten 1. XML Schema

Namespaces. Namensräume...

Deklaration standalone="yes" Quelle:

XML Schema Kurzreferenz

XML-Schema. Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

XML Vorlesung ETHZ SS XML Vorlesung ETHZ, Sommersemester

3. XML Schema. XML Schema. Eigenschaften von XML Schema. Vorteile eines expliziten Schemas: Die XML Schema Recommendation des W3C besteht aus:

XML DTD und Schema von Thomas Mangold

Mario Jeckle. XML Schema

1. Einführung 2. DTD 3. XML Schema 4. XPath 5. XSLT 6. XSL-FO 7. XQuery 8. Web Services 9. XML und Datenbanken

XML-Schema im Detail. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

XML Schema: Validieren statt Programmieren

XML Schema 2016 S h_da S Seite 1

Hauptseminar Informatik. Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema

XML Vorlesung ETHZ SS XML Vorlesung ETHZ, Sommersemester

Klaus Schild, Klaus Schild, Element-Deklaration: 1. Möglichkeit

Beispiel für die Verwendung von Namespaces. Namespaces. Namespaces Erläuterung (1) Namespaces Erläuterung (2)

Definition von Datentypen mit XML- Schemata

XML Schema 2012/2013 S Seite 1 h_da W

XML Schema 2012/2013 S Seite 1 h_da W

XML Schema S 2010/2011 a W _d Seite 1 h

XML Schema S 2012 h_da S Seite 1

DTDs und XML-Schema. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

XML Schema vs. Relax NG

XML Grammatiken und XForms

Aufgabe 1 : XML Schema ( (g,h,i) Punkte) Das folgende XML-Schema modelliert beliebig große Matrizen mit Elementen aus den rationalen Zahlen.

Zusammenfassung XML. Metasprache um Dokumenttypen zu definieren

XML Schema 2015 S h_da S Seite 1

XML Vorlesung FHA SS

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XML Schema Import for the Pathfinder XQuery Compiler

Vorlesung Datenbanken II SS 2006

Lösungen zum Praktikum XML-Technologien XML-Grammatiken

W3C s XML Schema Die Sprache der Sprachen Mario Jeckle DaimlerChrysler Forschungszentrum Ulm

Gliederung. Service Oriented Architecture - XML Technologies. 1 von 11

Erik Wilde XML Schema

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XML Schema. Seite 1. h_da SS 22007

XML Schema S 2011 h_da S Seite 1

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XML Vorlesung ETHZ SS XML Vorlesung ETHZ, Sommersemester

XML, XML-DTDs, und XML Schema

Übungsbeispiel 1 Erstellen Sie eine Homepage für Ihre Gruppe in XML und überprüfen Sie die Wohlgeformtheit in einem Editor/Browser.

XSD - XML Schema Definition

Zusammenfassung M. Rigling 1/22 Version 1.0

Aufgabe 5.1: (a) Lösung:

Studienarbeit. Tobias Tiedt. Lehrstuhl Datenbank und Informationssysteme Fachbereich Informatik Universität Rostock

XML Schema: Strukturen und Datentypen

XML (Extensible Markup Language)

XML Schema: Strukturen und Datentypen

XML-Schema. Einordnung

Tutorial 3 Einführung in XML

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79

Versuchsziele. 1. Aufgabe. Hochschule Harz FB Automatisierung und Informatik Versuch: XML Thema: Grundkenntnisse in XML mit DTD s und Schemata

XML-Schema (SCH) Sie erhalten einen Überblick über alle für XML-Schema relevanten Spezifikationen

Programmieren mit Java II

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XML Schema-Sprachen 04

Beuth Hochschule Verschiedene Bestandteile einer XML-Datei WS10/11

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XML-Übersicht. Von HTML zu XML

XML-Übersicht. Von HTML zu XML. Nutzen von XML. Geschichte von XML. Eigenschaften von XML. Nutzen von XML (extensible Markup Language)

XQuery - Generierung. Christoph Böhm. LN - Forschungsseminar Berlin,

Semantic Web Technologies I

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

Semistrukturierte Daten. 2. Datenmodellierung mit XML und XML-Schema XML. Lernziele:

XML Schema Marco Skulschus Marcus Wiederstein Sarah Winterstone

Model Driven Engineering für XML-Anwendungen

Kapitel 2. Markup. Language. XML-Dokumente. XML Document Type Definition XML Namespaces Schemadefinitionssprache für XML.

Index. Index CDATA 113, 183. Achse 430. child 425. all 191. choice 187, 191, 197, 393. ancestor 428. choose 272. Anwendung 351; Beispiel 302

ER-Diagramm (10 Punkte)

<B1>Skript</B1> Skript zur Vorlesung Auszeichnungssprachen Stand: September 2016

Michel Messerschmidt Diplomarbeit. Entwurf einer Sprache zur Klassifizierung von Malware-Vorfällen

<Trainingsinhalt> XML umsetzen und nutzen

3. Generische Strukturierung von XML-Dokumenten

IT-Zertifikat: Daten- und Metadatenstandards

Elementinhalt. </vorbesprechung> </veranstaltung> </lehre> Elemente. </vorbesprechung> <schlagwort>xml</schlagwort> Attribut.

Erhöhung der Datenqualität in XML-Dokumenten von Desktop Applikationen. Alexander Hilliger von Thile - REI/ID

2a) Rekursion (zugeschnitten auf Anfrage) (C) Prof. E. Rahm Universität Leipzig

2. Einführung in Datenbanken und XML

XML-Technologie: Grundlegende Syntax

Projektgruppe - Generierung von. Web-Anwendungen aus visuellen Spezifikationen

Vorlesung Werkzeuge der Informatik

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

2 XML-Basiskonzepte. 2.1 XML-Dokumente

XML Schemasprachen. Übersicht und Einordnung. Übersicht. ! DTDs und XML Schema. ! Schemasprachen als Konzept. ! Schemasprachen selbstgemacht

<< Java Architecture for XML Binding >>

4 XML und Datenbanken XML wird von Internet Explorer ab Version 5.0 und von Netscape ab Version 6 unterstützt.

Wie ist die Struktur der Daten? Wie wird die Austauschbarkeit der Daten sichergestellt?

XML in Oracle 12c. Wolfgang Nast

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

2. Klausur Web-basierte Informationssysteme SS 2016

Strukturierung von Inhalten

Herbstsemester Januar Datenbanksysteme II

Semistrukturierte Datenmodelle. XML Datenmodelle. XML Infoset. OEM Beispielbaum. Document InfoItem. Beispiel

Seminar: mobile GIS Austausch von Geodaten

5. XML-Datenbanken: Datendefinition

Transkript:

Semistrukturierte Daten Teil 4: XML-Schema Sommersemester 2009 4.1. Überblick 4.2. Namespaces 4.3. Element-Deklarationen 4.4. Attribut-Deklarationen 4.5. Komplexe Typen 4.6. Simple Typen 4.7. Vererbung 4.8. weitere XML-Schema Komponenten

4.1. Überblick W3C Standard einige Merkmale von XML-Schema Validierung 2

XML-Schema Standard XML Schema Definition (XSD) ist selbst als XML Dokument dargestellt es gibt auch DTD für XSD W3C Recommendation 2001 http://www.w3.org/tr/xmlschema-0/ (bzw. xmlschema-1, xmlschema-2) XML Schema Teil 0: "Primer" (gute Einführung!) XML Schema Teil 1: Strukturen XML Schema Teil 2: Datentypen 3

Einige Merkmale von XML-Schema Ist selbst in XML Syntax explizite Behandlung von Namespaces viele built-in Datentypen und Möglichkeit der Definition neuer Typen Typisierung auch für Elementinhalt möglich Einfache Codierung beliebiger Kardinalitäten objektorientierte Konzepte wie Vererbung gute Wiederverwendbarkeit und Erweiterbarkeit Unterstützung von "Schlüsseln" (PK, FK) 4

XSD-Datei(en) XML Schema ist immer separate Datei Verknüpfung Instanzdokument / Schema: XML Parser "kennt" zugehöriges XML Schema z.b.: XML-Schema Datei als Argument beim Aufruf des XML Parsers. über Attribut im Wurzelelement: schemalocation Attribut nonamespaceschemalocation Attribut Schemata können ineinander eingebettet werden: <include>: mehrere Schemata mit demselben Target NS <redefine>: einzelne Elemente können neu definiert werden <import>: mehrere Schemata mit unterschiedlichem TargetNS 5

Validierung XMLLINT: (http://xmlsoft.org/) portable C Bibliothek für Linux, Unix, MacOS, Windows, Kommandozeilen-Aufruf: xmllint schema <xsd dateiname> <xml dateiname> DOM/SAX-Parser in Java: Optionen: validierend oder nicht-validierend Beispiel 1 6

4.2. Namespaces Namespaces in XML-Schema Schema Definition ohne Target NS Schema Definition mit Target NS Schema Definitionen mit mehreren Target NS 7

Namespaces in XML Schema NS-Deklaration für Schema-NS im Root Element einer Schema Definition (üblicher Präfix "xsd" (oder "xs")): <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> NS-Dekaration im Instanzdokument (optional): xmlns:xsi="http://www.w3.org/2001/xmlschema instance" Deklaration des Namespaces in dem Elemente/Attribute des Instanzdokuments liegen: Target-NS (jedoch nur 1 Target NS pro XSD-Datei!): <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.example.com/contact" xmlns:co="http://www.example.com/contact"> <xsd:element name= "contact" type="co:contacttype"/> <xsd:complextype name="contacttype"> </xsd:complextype> </xsd:schema> 8

Schema-Definition ohne Target Namespace <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name= "contact" type="contacttype"/> <xsd:complextype name="contacttype"> <xsd:sequence> <xsd:element name="customer" type="usaddress"/> <xsd:element name="organization" type="usaddress"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="usaddress"> <xsd:sequence> </xsd:sequence> <xsd:attribute name="country" type="xsd:nmtoken" fixed="us"/> </xsd:complextype> </xsd:schema> 9

Referenzierung eines Schemas ohne Target-NS Mittels Attribut nonamespaceschemalocation <?xml version="1.0"?> <contact xmlns:xsi="http://www.w3.org/2001/xmlschema instance" xsi:nonamespaceschemalocation="contact.xsd"> <customer country="us"> <name>b.gates</name> <street>123 Main Street</street> <city>redmond</city> <state>wa</state> <zip>98052</zip> </customer> <organization country="us"> <name>microsoft Corporation</name>... </organization> </contact> 10

Schema-Definition mit Target Namespace Global (d.h. Top-Level ) definierte Komponenten d.h. direkte Subelemente von <schema> sind automatisch im Target NS müssen daher "qualifiziert" (d.h.: mit Präfix) referenziert werden. Lokale Komponenten sind default-mäßig im leeren NS und werden daher "unqualifiziert" (d.h.: ohne Präfix) verwendet Änderung dieses Default-Verhaltens Global: mit den Attributen elementformdefault bzw. attributeformdefault des <schema> Elements Lokal: mit dem Attribut form für Elemente/Attribute Werte dieser Attribute: qualified oder unqualified 11

Schema-Definition mit Target Namespace <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.example.com/contact" xmlns:co="http://www.example.com/contact"> <xsd:element name= "contact" type="co:contacttype"/> <xsd:complextype name="contacttype"> <xsd:sequence> <element name="customer" type="co:usaddress"/> <element name="organization" type="co:usaddress"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="usaddress"> </xsd:complextype> </xsd:schema> 12

Referenzierung eines Schemas mit Target-NS Mittels Attribut schemalocation <?xml version="1.0"?> <co:contact xmlns:xsi="http://www.w3.org/2001/xmlschema instance" xmlns:co="http://www.example.com/contact" xsi:schemalocation="http://www.example.com/contact contact.xsd"> <customer country="us"> <name>b.gates</name> <street>123 Main Street</street> <city>redmond</city>... </customer>... </co:contact> 13

Beispiel: Änderung des FormDefaults im Schema <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.example.com/contact" xmlns:co="http://www.example.com/contact" elementformdefault="qualified" attributeformdefault="qualified"> <xsd:element name= "contact" type="co:contacttype"/> <xsd:complextype name="contacttype"> <xsd:sequence> <xsd:element name="customer" type="co:usaddress"/> <xsd:element name="organization" type="co:usaddress"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="usaddress"> <xsd:element form="unqualified"/> </xsd:complextype> </xsd:schema> 14

Beispiel: Änderung des FormDefaults im Instanz-Dokument: <co:contact xmlns:xsi="http://www.w3.org/2001/xmlschema instance" xmlns:co="http://www.example.com/contact" xsi:schemalocation="http://www.example.com/contact contact.xsd"> <co:customer co:country="us"> <name>b.gates<name> <street>123 Main Street<street> <city>redmond<city> <state>wa<state> <zip>98052<zip> </co:customer>... </co:contact> Beispiel 2 15

Schema und mehrere Namespaces Problem: Pro XSD-Datei nur ein Target NS Lösung: Mehrere XSD-Dateien notwendig! Verknüpfung mittels <xsd:any namespace="ns"> : an sich uneingeschränkter Inhalt; mit Attribut processcontent steuerbar besser: <xsd:import> und Elementreferenz verwenden: <xsd:schema... xmlns:co="http://www.example.com/contact"... xmlns:org="www.ns.org" targetnamespace="http://www.example.com/contact"/> <xsd:import namespace="www.ns.org" schemalocation="org.xsd" /> <! TargetNS in org.xsd: www.ns.org > <xsd:element ref="org:organization"/> Beispiel 3 16

4.3. Element-Deklarationen Arten der Deklaration Inhaltsmodelle Einige Attribute bei der Element-Deklaration 17

Arten der Deklaration Global definierte Elemente direkt als Kind des <schema> Wurzelelementes Lokal definierte Elemente im Kontext anderer Elemente definiert (bzw. in complextype oder Element-Gruppe) Festlegen des Typs: Typangabe (Attribut "type") Referenz auf global definiertes Element (Attribut "ref") Anonyme Typdefinition 18

Beispiel <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="veranstaltung"> <xsd:complextype> <xsd:sequence> <xsd:element name="titel" type="xsd:string" maxoccurs="1"/> <xsd:element ref="schlagwort" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="schlagwort" type="xsd:string"/> </xsd:schema> 19

Beispiel global definiertes Element <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="veranstaltung"> <xsd:complextype> <xsd:sequence> <xsd:element name="titel" type="xsd:string" maxoccurs="1"/> <xsd:element ref="schlagwort" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="schlagwort" type="xsd:string"/> </xsd:schema> anonymer, komplexer Typ lokal definiertes Element Elementreferenz Typangabe benannter, simpler Typ 20

Inhaltsmodelle beliebiges Inhaltsmodell leeres Inhaltsmodell Simpler Typ: nur Zeichendaten auch keine Attribute erlaubt Komplexer Typ: enthält Elemente und/oder Attribute mixed : Zeichendaten und Subelemente 21

Beliebiges Inhaltsmodell ohne Attribute: <xsd:element name="veranstaltung" type="xsd:anytype"/> Kurzschreibweise: <xsd:element name="veranstaltung"/> (anytype ist der default, wenn kein Typ angegeben wird.) mit Attributen: <xsd:element name="veranstaltung"> <xsd:complextype> <xsd:complexcontent> <xsd:extension base="xsd:anytype"> <xsd:attribute name= "jahr" type="xsd:gyear"/> </xsd:extension> </xsd:complexcontent> </xsd:complextype> </xsd:element> 22

Leeres Inhaltsmodell ohne Attribute: <xsd:element name="veranstaltung"> <xsd:complextype/> </xsd:element> mit Attributen: <xsd:element name="veranstaltung"> <xsd:complextype> <xsd:attribute name= "jahr" type="xsd:gyear"/> <xsd:attribute name= "vorbesprechung" type="xsd:datetime"/> </xsd:complextype> </xsd:element> 23

Einige Attribute bei der Elementdeklaration type: Ein vordefinierter oder anwenderdefinierter Elementtyp ref: Referenz auf globale Elementdeklaration zur Übernahme der dort spezifizierten Definitionen name: der unqualifizierte (lokale) Name minoccurs: Minimale Anzahl des Vorkommens. Default = 1. maxoccurs: Maximale Anzahl des Vorkommens. Default = 1. default: Element bekommt diesen Wert, wenn kein anderer Wert vorhanden ist. fixed: Element bekommt immer diesen Wert zugewiesen. form: (qualified, unqualified): gibt bei lokalem Element an, ob es im Target-NS ist oder nicht (überschreibt elementformdefault) 24

4.4. Attribut-Deklarationen Arten der Deklaration Einige Attribute bei der Attribut-Deklaration 25

Arten der Deklaration Global definierte Attribute direkt als Kind des <schema> Wurzelelementes Lokal definierte Attribute im Kontext eines complextype oder einer Attribut-Gruppe Festlegen des Typs Typangabe (Attribut "type") Referenz auf global definiertes Attribut (Attribut "ref") Anonyme Typdefinition Bemerkung Attribute haben beliebigen simplen Typ Attribute als Teil eines complextype werden immer nach den Elementdeklarationen definiert 26

Einige Attribute bei der Attributdeklaration type: ein vordefinierter oder anwenderdefinierter Datentyp ref: Referenz auf eine andere Attributdeklaration zur Übernahme der dort spezifizierten Definitionen name: der unqualifizierte (lokale) Name fixed: Attribut bekommt immer diesen Wert zugewiesen default: Ein Attribut mit diesem Namen und diesem Wert wird ergänzt, falls das Attribut nicht angegeben wurde. use: (optional, required, prohibited): default ist "optional" form: (qualified, unqualified): gibt bei lokalem Attribut an, ob es im Target-NS ist oder nicht (überschreibt attributeformdefault) 27

Beispiele <xsd:attribute name="sine_tempore" default="yes" type="xsd:nmtoken"/> <xsd:attribute name="jahr" use="required" type="xsd:gyear"/> <xsd:attribute name="sine_tempore"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:enumeration value="gestern"/> <xsd:enumeration value="heute"/> <xsd:enumeration value="morgen"/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> 28

4.5. Komplexe Typen Feste Reihenfolge der Subelemente Auswahl eines Subelements Beliebige Reihenfolge der Subelemente Gemischter Inhalt simple content vs. complex content 29

Feste Reihenfolge der Subelemente <xsd:sequence> ist der Default bei complextype wenn nichts angegeben Reihenfolge des Auftretens muss beachtet werden wie in DTDs: (..,..,..) in DTD kein min/maxoccurs, nur Verschachtelungen aus *,+,? min/maxoccurs auch auf sequence selbst anwendbar Beispiel: <xsd:complextype name="bestand"> <xsd:sequence> <xsd:element name="firma" type="xsd:string"/> <xsd:element name= "Stichtag" minoccurs="0" type="xsd:date"/> <xsd:element name="artikel" maxoccurs="unbounded" type="arttyp"/> </xsd:sequence> </xsd:complextype> 30

Auswahl eines Subelementes <xsd:choice> wie in DTD: (......) mächtiger als in DTDs, da mit min/maxoccurs verknüpfbar min/maxoccurs auch auf choice selbst anwendbar Verschachtelungen von choice, sequence möglich Beispiel <xsd:choice minoccurs="0" maxoccurs="2"> <xsd:element name="titel" type="xsd:string" maxoccurs="2"/> <xsd:element name="nummer" type="xsd:long" /> </xsd:choice> Bemerkung: So etwas ist nicht leicht in DTD ausdrückbar! 31

Beliebige Reihenfolge der Subelemente <xsd:all> Alle Elemente in beliebiger Ordnung all kann nicht verschachtelt werden. Auch Schachtelung mit Sequence und Choice ist verboten. Für jedes Element darin muss maxoccurs=1 und minoccurs=0 oder =1 gelten. Beispiel <xsd:complextype name="haustiere"> <xsd:all> <xsd:element ref="hunde"/> <xsd:element ref="katzen"/> <xsd:element ref="hasen"/> </xsd:all> </xsd:complextype> 32

Gemischter Inhalt Gemischter Inhalt: Attribut mixed kann beliebig mit sequence, choice, minoccurs,... verknüpft werden Beispiel-Schema: <xsd:element name="veranstaltung" type="neuertyp"/> <xsd:complextype name="neuertyp" mixed="true"> <xsd:sequence> <xsd:element name="titel" type="xsd:string"/> <xsd:element name="nummer" type="xsd:long" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> Beispiel-Instanzdokument: <veranstaltung>dies ist die VL <titel>semistrukturierte Daten </titel> mit Nummer <nummer>181135</nummer> oder <nummer>181136</nummer>,das weiß ich nicht genau </veranstaltung> 33

Simple Content vs. Complex Content Simple Content nur Text Inhalt keine Subelemente möglich Attribute möglich bei simplecontent, aber nicht in simpletype! ist default bei simpletype Complex Content Elemente oder gemischter Inhalt Attribute möglich ist default bei complextype (d.h. man kann innerhalb eines complextype-elements auf das Subelement complexcontent verzichten). Complex Type mit Simple Content? ist sinnvoll: bei einem Element mit Text-Inhalt und Attribut(en) 34

Beispiel <xsd:complextype name="titel"> <xsd:simplecontent> <xsd:extension base="xsd:string"> <xsd:attribute name="sprache" type="xsd:nmtoken"/> </xsd:extension> </xsd:simplecontent> </xsd:complextype> Bemerkung: Elemente mit reinem Text-Inhalt: eigentlich simpler Typ Attribute können aber nur für "complextype" definiert werden!! Lösung: complextype mit simplecontent Benötigt Vererbung, um Elementinhalt als simpletype zu definieren. 35

4.6. Simple Typen Überblick Built-in Typen Beispiele 36

Überblick Mögliche Klassifikationen für simple Datentypen Atomar vs. aggregiert atomare: bestehen aus unteilbaren Werten aggregierte: listen-artige und Vereinigungstypen Primitiv vs. abgeleitet primitiv: unabhängig von anderen Datentypen abgeleitet: auf der Basis eines anderen Typs definiert Vorgegeben vs. anwenderdefiniert vorgegeben: 44 built-in types in XML Schema Der Anwender kann davon weitere Typen ableiten. 37

Built-In Datentypen primitive Datentypen, z.b.: string decimal, float, double, boolean duration, time, datetime, date, etc. abgeleitete Typen, z.b.: von decimal abgeleitet: integer, positiveinteger, negativeinteger, nonnegativeinteger, nonpositiveinteger long, int, short, byte, von string abgeleitet: normalizedstring, token, Name, von token abgeleitet (für DTD Kompatibilität): ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS 38

Hierarchie der Built-In Datentypen 39

Beispiele für zulässige Werte boolean: true, false, 1, 0 float (single-precision, 32-bit) : -INF, -1E4, 12.78E-2, 12, INF, NaN double (double-precision 64-bit): -INF, -1E4, 12.78E-2, 12, INF, NaN language (gültige Werte für xml:lang lt. XML 1.0): en-gb, en-us, fr, date: 2007-05-31 gmonth: --05-- gyear: 2007 gyearmonth: 2007-02 gday: ---31 gmonthday: --05-31 time: 13:20:00.000-05:00 (d.h. -5h Zeitverschiebung bzgl. UCT) duration: P1Y2M3DT10H30M12.3S (P = period, year, month, day, time,...) 40

4.7. Vererbung Ableitung neuer Typen Restriktionen bei simplen Typen Listentypen Vereinigungstypen Abgeleitete built-in Typen Abgeleitete komplexe Typen Weitere Features von XML-Schema 41

Ableitung neuer Typen derived by restriction: auf simple/komplexe Typen anwendbar Instanz des eingeschränkten Typs B ist auch Instanz des Basistyps A. derived by extension: neue Elemente/Attribute hinzufügen Simpler Typ wird dadurch zu komplexem Typ derived by list: Liste von Elementen eines simplen Typs derived by union: Vereinigung von 2 oder mehr simplen Typen 42

Restriktionsmöglichkeiten bei simplen Typen heißen auch Eigenschaften bzw. Facetten length, minlength, maxlength Beschränkung der Stringlänge mininclusive, maxinclusive, minexclusive, maxexclusive Beschränkung des Wertebereichs bei Zahlen Pattern Reguläre Ausdrücke wie in Perl enumeration Auflistung aller erlaubten Werte whitespace preserve, replace, collapse totaldigits, fractiondigits Dezimalstellen insgesamt bzw. nach dem Komma 43

Aufzählungstypen Erlaubt: ein Wert aus einer vordefinierten Menge <xsd:simpletype name="termine"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="gestern"/> <xsd:enumeration value="heute"/> <xsd:enumeration value="morgen"/> </xsd:restriction> </xsd:simpletype> Bemerkung: Patterns und Enumerationen werden immer mit "oder" interpretiert wenn sie öfter vorkommen alle anderen Einschränkungen mit "und" 44

Listentypen <xsd:list itemtype="..."/> Listen können nur simple Typen enthalten insbes.: Listen von Listen nicht unterstützt Listenelemente durch Whitespaces getrennt Beispiel <xsd:simpletype name="nachbarlaender"> <xsd:list itemtype="xsd:nmtoken"/> </xsd:simpletype> Instanz "I CH FL D CZ SK H SLO" 45

Vereinigungstypen Kombination von mehreren simplen Typen entweder via membertypes-attribut <xsd:simpletype name="bsp Union"> <xsd:union membertypes="typ1 Typ2"/> </xsd:simpletype> oder Typen direkt innerhalb des union-elements definieren <xsd:simpletype name="size"> <xsd:union> <xsd:simpletype> <xsd:restriction base='xsd:integer'>... </xsd:simpletype> <xsd:simpletype> <xsd:restriction base='xsd:string'>... </xsd:simpletype> </xsd:union> </xsd:simpletype> 46

Beispiele für abgeleitete built-in Typen Einschränkung mittels min/maxinclusive Facette: <xsd:simpletype name="short"> <xsd:restriction base="xsd:int"> <xsd:mininclusive value=" 32768"/> <xsd:maxinclusive value="32767"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="positiveinteger"> <xsd:restriction base="xsd:nonnegativeinteger"> <xsd:mininclusive value="1"/> </xsd:restriction> </xsd:simpletype> 47

Abgeleitete komplexe Typen Restriction: Einschränkungen des Wertebereichs, z.b.: Komponententyp einschränken, optionale Komponenten weglassen, min/max-occurs einschränken, etc. eingeschränkter Typ ist Teilmenge des Basistyps Alle Komponenten (Subelemente, Attribute), die enthalten sein sollen, müssen noch einmal explizit angegeben werden. Extension: Hinzufügen von Elementen/Attributen Basistyp kann simpler oder komplexer Typ sein. (simpler Typ wird dadurch zu komplexem Typ) Bei Erweiterung eines komplexen Typs: Man muss nur jene Komponenten angeben, die neu dazukommen. 48

Beispiel Restriction <xsd:complextype name="bestand"> <xsd:sequence> <xsd:element name="firma" type="xsd:string"/> <xsd:element name="stichtag" minoccurs="0" type="xsd:date"/> <xsd:element name="artikel" maxoccurs="unbounded" type="arttyp"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="bestandneu"> <xsd:restriction base="bestand"> <xsd:sequence> <xsd:element name="firma" type="xsd:string"/> <xsd:element name="artikel" maxoccurs="100" type="arttyp"/> </xsd:sequence> </xsd:restriction> </xsd:complextype> 49

Beispiel Extension <xsd:complextype name="address"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="us Address"> <xsd:extension base="address"> <xsd:sequence> <xsd:element name="state" type="us State"/> <xsd:element name="zip" type="xsd:positiveinteger"/> </xsd:sequence> </xsd:extension> </xsd:complextype> 50

Weitere Features von XML-Schema Ersetzungen im Instanz-Dokument Substitionsgruppen: Überall, wo Element A erwartet wird, darf auch Element B verwendet werden. Ableitung: Überall, wo Typ A erwartet wird, darf auch von A abgeleiteter Typ verwendet werden. Attribute zur Steuerung der Vererbung/Substitution abstract: Abstraktes Element wird nie im Instanz-Dokument verwendet block: Substitutionen verbieten final: keine weiteren Ableitungen von diesem Typ erlaubt fixed: Facette darf nicht weiter verändert werden. 51

4.8. weitere XML-Schema Komponenten Element-Gruppen Attribut-Gruppen Integritätsbedingungen Dokumentation im Schema 52

Elementgruppen Elementgruppe definieren müssen global deklariert werden: xsd:group mit Attribut "name" keine Attributdeklarationen erlaubt <xsd:group name="namensgruppe"> <xsd:sequence> <xsd:element name="vorname" type="xsd:string"/> <xsd:element name="nachname" type="xsd:string"/> </xsd:sequence> </xsd:group> Verwendung einer Elementgruppe in complextype oder anderer Elementgruppe Referenzierung mittels xsd:group mit Attribut "ref " <xsd:complextype name="kunde"> <xsd:sequence> <xsd:element name="firma" type="xsd:string"/> <xsd:group ref="namensgruppe"/> </xsd:sequence> </xsd:complextype> 53

Attributgruppen Attributgruppen müssen global deklariert werden: xsd:attributegroup mit Attribut "name" <xsd:attributegroup name="namensgruppe"> <xsd:attribute name="vorname" type="xsd:string"/> <xsd:attribute name="nachname" type="xsd:string"/> </xsd:atttributegroup> Verwendung einer Attributgruppe in complextype, Elementdeklaration, Attributgruppe Referenzierung mittels xsd:attributegroup mit Attribut "ref " <xsd:complextype name="kunde"> <xsd:sequence> <xsd:element name="kundennummer" type="xsd:integer"/> <xsd:element name="firma" type="xsd:string"/> </xsd:sequence> <xsd:attributegroup ref="namensgruppe"/> </xsd:complextype> 54

Integritätsbedingungen unique: Elementinhalt bzw. Attributwert muss eindeutig sein: und zwar innerhalb einer Menge von Elementen (die mittels XPath- Ausdruck bestimmt werden) vergleichbar mit UNIQUE-constraint in relationaler DB key: Elementinhalt bzw. Attributwert muss eindeutig und tatsächlich vorhanden sein: ähnlich wie unique (aber Wert darf nicht ausgelassen werden) vergleichbar mit Primärschlüssel in relationaler DB keyref: Verweis auf einen key-wert: XML-Parser überprüft referentielle Integrität vergleichbar mit Fremdschlüssel in relationaler DB 55

Beispiel: key/keyref <xsd:element name="lehre" type="lehretyp"> <xsd:key name="veranstaltungsnummer"> <xsd:selector xpath="veranstaltung"/> <xsd:field xpath="nummer"/> </xsd:key> <xsd:keyref name="referenzname" refer="veranstaltungsnummer"> <xsd:selector xpath="termine/termin"/> <xsd:field xpath="lvanummer"/> </xsd:keyref> Beispiel 4 </xsd:element> <Lehre> <veranstaltung><name>...</name><nummer>13</nummer></veranstaltung> <veranstaltung><name>...</name><nummer>17</nummer></veranstaltung> <termine> <termin><datum>...<datum><lvanummer>17</lvanummer></termin> <termin><datum>...<datum><lvanummer>13</lvanummer></termin> <termin><datum>...<datum><lvanummer>17</lvanummer></termin> </termine> </Lehre> 56

Dokumentation im Schema Es gibt dafür 3 spezielle Elemente: annotation: top-level element (direkt unter <schema>) oder auch in Element-, Attribut-,...Definitionen Subelemente von annotation: (reine Text-Elemente) Beispiel: documentation appinfo: zusätzliche Information für Applikation <xs:annotation> <xs:appinfo>ssd Unterlagen</xs:appInfo> <xs:documentation xml:lang="de"> Diese Schema definiert ein SSD Vorlesungsskriptum </xs:documentation> </xs:annotation> 57