XML Schema - fbi.h-da.de€¦ · h_ Seite 3 d a S S 2 0 1 4 XML Schema – Elementdeklaration...

29
Seite 1 h_da SS 2014 XML Schema

Transcript of XML Schema - fbi.h-da.de€¦ · h_ Seite 3 d a S S 2 0 1 4 XML Schema – Elementdeklaration...

Seite 1h_da

SS

201

4

XML Schema

Seite 2h_da

SS

201

4

XML/Schema: Datentypen

• Zusammenfassung: Dokument-Strukturen in XML Schema

• Datentypen in XML Schema

- Einfache Typen

- Komplexe Typen

• Konzept “Mixed Content”

Seite 3h_da

SS

201

4

XML Schema – Elementdeklaration

Attribute einer Elementdeklaration Zusammenfassung:

name: XML Name

type: Typdefinition (built in oder von der Anwendung definiert)

minOccurs: nicht negative Integer

maxOccurs: positive Integer oder „unbounded“

fixed: Element muss mit gegebenem Wert auftreten

default: Element erhält den gegebenen Wert, wenn nicht anderweitig ein Wert zugewiesen ist.

nillable: (boolean) Element kann NIL Wert haben.

Elemente

Seite 4h_da

SS

201

4

XML Schema – Attribut Deklaration

Übersicht über Attribute bei der XML/Schema Attributdeklaration:

name: XML Name

type: Typdefinition (built in oder von der Anwendung definiert, immer einfach)

use: optional | prohibited | required

fixed: Attribute muss mit gegebenem Wert auftreten

default : Attribut erhält den gegebenen Wert, wenn nicht anderweitig ein Wert zugewiesen ist.

Attribute

Seite 5h_da

SS

201

4

XML Schema – Inhaltsmodelle

sequence, choice, all, group

sequence Folge von Elementen, minOccurs und maxOccurs kann angewendet werden.

choice Alternative von Elementen, minOccurs und maxOccurs kann angewendet werden.

all Alle Elemente 0 oder 1 mal in beliebiger Reihenfolgen. Einschränkungen: nur auf oberster Ebene eines Inhaltsmodells,

nur einzelne Elemente (keine Inhaltsmodelle)

group Bilden von Gruppen zur Wiederverwendung.

Seite 6h_da

SS

201

4

XML Schema – Simple Types

XML Schema unterstützt 44 vordefinierte Datatypen (simple types). Formal wird zwischen built-in und derived Datentypen unterschieden.

Beispiele (vollständige Liste folgt):

- string, boolean, decimal, float, double, uriReference, ID, IDREF

- language, name, integer

Zusätzlich gibt es Listentypen:

NMTOKENS, IDREFS,

Und einen Union Type.

Seite 7h_da

SS

201

4

XML Schema – Simple Types

XML Schema unterstützt 44 vordefinierte Datatypen (simple types). Formal wird zwischen built-in und derived Datentypen unterschieden.

Beispiele (vollständige Liste folgt):

- string, boolean, decimal, float, double, uriReference, ID, IDREF

- language, name, integer

Zusätzlich gibt es Listentypen:

NMTOKENS, IDREFS,

Und einen Union Type.

Seite 8h_da

SS

201

4XML Schema – Simple Types

Type Beispiel

string Confirm this is electric

normalizedString Confirm this is electric (newline, tabs, CR werden zu space char)token Confirm this is electric (Folgen von space chars zu einem space char)byte -1, 126

unsignedByte 0, 126

base64Byte GpM7

hexBinary 0FB7

integer -126789, -1, 0, 1, 126789 (und Varianten)

Seite 9h_da

SS

201

4

XML Schema – Simple Types

Type Beispiel

decimal -1.23, 0, 123.4, 1000.00

float -INF, -1E4, -0, 0, 12.78E-2, (auch double)

boolean true, false

time 13:20:00.000

dateTime 1999-05-31T13:20:00.000-05:00

duration P1Y2M3DT10H30M12.3S

date 1999-05-31 (auch Varianten)

Seite 10h_da

SS

201

4

XML Schema – Simple Types

Type Beispiel

Name shipTo

QName po:USAddress

anyURI http://www.example.com/

language en-GB, en-US, fr

ID , IDREF ,IDREFS A1

ENTITY, ENTITIES

NOTATION

NMTOKEN, NMTOKENS

Seite 11h_da

SS

201

4

XML Schema – Simple Types – neuer Typ Aufzählung

Neue einfache Typen werden von existierenden einfachenTypen abgeleitet:

Beispiel (Definition):

<xs:simpleType name="monatname"> <xs:restriction base="xs:string"> Valuespace

<xs:enumeration value="Januar"/> Facet <xs:enumeration value="Februar"/>

.... </xs:restriction>

</xs:simpleType>

Beispiel (Nutzung):

<xs:attribute name= "monat" type= "monatname" use="required"/>

Seite 12h_da

SS

201

4

XML Schema – Simple Types – neuer Typ

Beispiel (Definition):

<xs:simpleType name="monatnummer"> <xs:restriction base="xs:integer"> Valuespace

<xs:minInclusive value="1"/> Facet <xs:maxInclusive value="12"/>

</xs:restriction> </xs:simpleType>

Beispiel (Nutzung):

<xs:attribute name= "monat" type= "monatnummer" use="required"/>

Seite 13h_da

SS

201

4

XML Schema – Simple Types – neuer Typ Liste

Neue einfache Typen werden von existierenden einfachenTypen abgeleitet:

Beispiel (Typ-Definition):

<xs:simpleType name="listOffloats">

<xs:list itemType="xs:float"/>

</xs:simpleType>

Beispiel (Element-Definition):

<xs:element name="mengen" type ="listOffloats"/>

Beispiel (Nutzung):

<mengen>200E03 150.37 959E-7 95.945</mengen>

Seite 14h_da

SS

201

4

XML Schema – Simple Types – neuer Typ

Für jeden Built-in Datentyp ist festgelegt, welche Facets anwendbar sind:

Beispiel: string

• length • minLength • maxLength • pattern • enumeration

Ausserdem ist definiert, welche built-in derived Datentypen definiert sind:

• language • NMTOKEN • name

Seite 15h_da

SS

201

4

XML Schema – Simple Types – neuer Typ

Für jeden Built-in Datentyp ist festgelegt, welche Facets anwendbar sind:

Beispiel: integer

• precision • scale • pattern • enumeration • maxInclusive • maxExclusive • minInclusive • minExclusive

Ausserdem ist definiert, welche built-in derived Datentypen definiert sind:

• nonPositiveInteger • long • nonNegativeInteger

Seite 16h_da

SS

201

4

XML Schema – Simple Types

Beispiel für einen Union Type:

<xs:simpleType name="monatUnion"> <xs:union memberTypes="monatname monatnummer"/>

</xs:simpleType>

Erlaubt sind dann folgende Exemplare:

<monate>1 3 12</monate> <monate>Januar 3 Dezember</monate> <monate>Mai</monate>

Seite 17h_da

SS

201

4

XML Schema – Typenkonzept

Alle Typdefinitionen in XML Schema bilden eine Hierarchie. Wurzel dieser Hierarchie ist der "Ur-Typ", von dem alle simple und complex Typen abgeleitet sind.

xs:anyType als Typbezeichnung eines Elements legt fest, dass der Inhalt in keiner Weise beschränkt ist.

Neue Typen werden durch extension oder restriction von definierten Typen abgeleitet.

Beispiel für restriction:

<xs:simpleType name="monatnummer"> <xs:restriction base="xs:integer"> Valuespace <xs:minInclusive value="1"/> Facet

<xs:maxInclusive value="12"/> </xs:restriction>

</xs:simpleType>

Seite 18h_da

SS

201

4

XML Schema – Typenkonzept

Built-in primitive

Built-in derived

Seite 19h_da

SS

201

4

XML Schema – Typenkonzept

Typdefinition durch extension:

Typdefinition einer Adresse (dient als Ausgangsmaterial):

<xs:complexType name="Adresse"><xs:sequence> <xs:element name="Name" type="xs:string"/>

<xs:element name="Strasse" type="xs:string"/> <xs:element name="Stadt" type="xs:string"/></xs:sequence>

</xs:complexType>

Seite 20h_da

SS

201

4

XML Schema – Typenkonzept - Extension

<xs:complexType name="DE_Adresse"><xs:complexContent>

<xs:extension base="Adresse"> <xs:sequence> <xs:element name="PLZ" type="xs:integer"

minOccurs="0"/> </xs:sequence> <xs:attribute name="Code" type="xs:string"/></xs:extension>

</xs:complexContent></xs:complexType>

<xs:element name="Lieferadresse" type="DE_Adresse"/>

<Lieferadresse Code="D"><Name>Maier</Name> <Strasse>Bergstrasse</Strasse><Stadt>Darmstadt</Stadt> <PLZ>64282</PLZ>

</Lieferadresse>

Seite 21h_da

SS

201

4

XML Schema – Typenkonzept - Restriction

Restriktionen sind auf bestimmte Fälle eingeschränkt:

- Optionale Elemente dürfen wegfallen,

- Defaultwerte definieren, wenn keiner definiert war (Attribute)

- Fixed Value definieren, wenn keiner definiert war (Attribute)

- Typdefinition, wenn kein Typ definiert war (Attribute)

- Einschränkende Facets definieren (Attribute)

- Wiederholungsfaktoren (minOccurs, maxOccurs) einschränken

Seite 22h_da

SS

201

4

XML Schema – Typenkonzept, abstrakte Typen

XML Schema unterstützt abstrakte Typen:

- Können nicht instantiiert werden.

- Abgeleitete Typen in den Dokumentinstanzen müssen das xsi:type Attribut verwenden, um den konkreten Type anzuzeigen

Verwendung:

<transport xsi:type="Car"/>

Seite 23h_da

SS

201

4XML Schema – Typenkonzept, abstrakte Typen

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:complexType name="Vehicle" abstract="true"/><xs:complexType name="Car">

<xs:complexContent> <xs:extension base="Vehicle"/></xs:complexContent>

</xs:complexType><xs:complexType name="Plane">

<xs:complexContent> <xs:extension base="Vehicle"/></xs:complexContent>

</xs:complexType><xs:element name="transport" type="Vehicle"/>

</xs:schema>

Verwendung:<transport xsi:type="Car"/>

Seite 24h_da

SS

201

4

XML Schema – Typenkonzept, anonyme Typen

Ein anonymer Typ hat keinen Namen (kein name-Attribut). Solche Typen:

• können nicht referenziert (wiederverwendet werden)

• Sind nur innerhalb einer Typ-/Element-Deklaration möglich

Beispiel:

<xs:element name="Preis"> <xs:complexType>

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

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

</xs:simpleContent> </xs:complexType>

</xs:element>

Seite 25h_da

SS

201

4

XML Schema – Complex Types – Beispiele aus MPEG-7<!-- Definition of IntegerMatrix datatype -->

<complexType name="IntegerMatrixType"><simpleContent> <extension base="integerVector"> <attribute ref="dim" use="required"/> </extension></simpleContent>

</complexType> <!-- definition of dim attribute --> <attribute name="dim"> <simpleType> <restriction base="listOfPositiveIntegerForDim"> <minLength value="1"/> </restriction> </simpleType> </attribute>

Seite 26h_da

SS

201

4

XML Schema – Complex Types – Beispiele aus MPEG-7

<!-- Definition of listOfPositiveIntegerForDim datatype --> <simpleType name="listOfPositiveIntegerForDim"> <list itemType="positiveInteger"/> </simpleType>

<!-- Definition of integerVector datatype --><simpleType name="integerVector">

<list itemType="integer"/></simpleType>

Seite 27h_da

SS

201

4

XML Schema – Complex Types – Beispiele aus MPEG-7

<!-- Deklaration eine Matrix im Schema --><xs:element name="myMatrix" type="IntegerMatrixType">

<!-- Instanz eines Vektors der Länge 5 --><myMatrix dim="5" >5 6 6 7 8</myMatrix>

<!-- Instanz einer 2-dimensionalen 3 x 5 Matrix →<myMatrix dim="3 5"> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15</myMatrix>

Seite 28h_da

SS

201

4

XML Schema – Grundkonzepte- Mixed content

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

<employee>

Text <id>123</id> Text2 <name>Maier</name> Text3 <hireDate>12-12-12</hireDate> Text4 </employee>

Seite 29h_da

SS

201

4

XML Schema – Grundkonzepte- Mixed content

Mit XML/Schema kann die Reihenfolge definiert werden:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:complexType name="employeeType" mixed="true">

<xs:sequence><xs:element name="id" type="xs:int"/><xs:element name="name" type="xs:string"/><xs:element name="hireDate" type="xs:date"/>

</xs:sequence></xs:complexType><xs:element name="employee" type="employeeType"/>

</xs:schema>