xml schema (xsd) - sws.bfh.chamrhein/skripten/xml/xsdfolien.pdf · ein xml schema definiert • die...
TRANSCRIPT
![Page 1: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/1.jpg)
XML Schema (XSD)XML Schema (XSD)
http://www.w3.org/TR/xmlschema-0
![Page 2: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/2.jpg)
Was ist XML Schema?Was ist XML Schema?
• XML Schema ist eine XML basierte Alternative für ein DTD.
• Ein XML Schema beschreibt die Struktur eines XML Dokuments.Dokuments.
• XML Schema ist eine W3C Recommendation
• Statt XML Schema wird oft die Abkürzung XSD (XML Schema Definition) benutzt.
![Page 3: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/3.jpg)
Ein XML Schema definiertEin XML Schema definiert
• die Elemente, welche im Dokument vorkommen dürfen
• die Attribute, welche vorkommen dürfen• welche Elemente Kindelemente sind• die Reihenfolge der Elemente• die Reihenfolge der Elemente• die Anzahl der Kindelemente• ob ein Element leer ist oder Text enthalten kann• Datentypen für Elemente und Attribute• Default Werte und feste Werte für Elemente und
Attribute
![Page 4: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/4.jpg)
Die Vorteile von XSDDie Vorteile von XSD
• XML Schema unterstützt Datentypen
• XML Schema benutzt XML Syntax
• XML Schemas sind erweiterbar
![Page 5: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/5.jpg)
Beispiel einer DTDBeispiel einer DTD
<!-- file person.dtd -->
<!ELEMENT person (name,profession*)>
<!ATTLIST person born CDATA #IMPLIED
died CDATA #IMPLIED>died CDATA #IMPLIED>
<!ELEMENT name (first_name,last_name)>
<!ELEMENT first_name (#PCDATA)>
<!ELEMENT last_name (#PCDATA)>
<!ELEMENT profession (#PCDATA)>
![Page 6: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/6.jpg)
Ein BeispielEin Beispiel
<?xml version="1.0"?><xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.note.org"elementFormDefault="qualified">
<xs:element name="note"><xs:complexType><xs:complexType>
<xs:sequence><xs:element name="to" type="xs:string"/><xs:element name="from" type="xs:string"/><xs:element name="heading" type="xs:string"/><xs:element name="body" type="xs:string"/>
</xs:sequence></xs:complexType>
</xs:element></xs:schema>
![Page 7: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/7.jpg)
InstanzInstanz--Dokument zum SchemaDokument zum Schema
<?xml version="1.0"?>
<note
xmlns="http://www.note.org"
xmlns:xsdi="http://www.w3.org/2001/XMLSchema-instance"
xsdi:schemaLocation="http://www.note.org note.xsd">
<to> Bill </to><to> Bill </to>
<from> Jani </from>
<heading> Reminder </heading>
<body>
Don't forget the book!
</body>
</note>
![Page 8: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/8.jpg)
Die Teile eine SchemasDie Teile eine Schemas
Schema
Deklaration Definition
Element
Attribut
einfacher Typ
komplexer Typ
![Page 9: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/9.jpg)
Deklaration / DefinitionDeklaration / Definition
Eine DeklarationDeklaration beschreibt ein Element oder Attribut, welches im Instanzdokument vorkommen darf:
<xs:element name="age" type="xs:short"/>
<xs:element name="product">. . .. . .
</xs:element>
Eine DefinitionDefinition definiert einen Typ, welcher dann in einer Element- oder Attributdeklaration verwendet werden kann.
<xs:complexType name="productType">. . .
</xs:complexType>
![Page 10: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/10.jpg)
type Attribut type Attribut �� �� complexTypecomplexType
Eine Element Deklaration kann entweder ein type Attribut haben, oder eine anonyme Typdefinition enthalten. Aber nicht beides gleichzeitig!
<xs:element name="note" type="nameType">
<xs:complexType>
…
</xs:complexType>
</xs:element>
![Page 11: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/11.jpg)
Das TypsystemDas Typsystem
anyType
einfacher Typeinfacher Typ
komplexer Typ
atomar list
sequence choice
builtin
all
union
![Page 12: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/12.jpg)
Einfache TypenEinfache Typen
![Page 13: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/13.jpg)
Deklaration von einfachen ElementenDeklaration von einfachen Elementen
Beispiele von einfachen Elementen mit atomaren Typen
<lastName>Schmid</lastName>
<age>34</age>
<born>1968-03-27</born>
Die entsprechenden Deklarationen:
<xs:element name="lastName" type="xs:string"/>
<xs:element name="age" type="xs:short"/>
<xs:element name="born" type="xs:date"/>
![Page 14: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/14.jpg)
Einfache ElementeEinfache Elemente
Die allgemeine Syntax für einfache Elemente
<xs:element name="Elementname"
type="Elementtyp"type="Elementtyp"
minOccurs="min"
maxOccurs="max"
default/fixed="Vorgabe" />
![Page 15: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/15.jpg)
Vordefinierte primitive Typen
anySimpleType
date time boolean double floatdurationdateTime
anyURI QName
gDaydecimal
string
gMonth
gYearMonth
gYear
gMonthDay
String Typen
numerische Typen
![Page 16: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/16.jpg)
Abgeleitete String Typen
normalizedString
string
token
Name
NCName
IDREF
IDREFS
NMTOKEN
languageNMTOKENS
ENTITY
ENTITIES
ID
![Page 17: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/17.jpg)
Abgeleitete Numerische Typen
integer
long nonNegativeInteger
nonPositiveInteger
decimal
int
short
byte
positiveInteger
nonPositiveInteger
negativeInteger
unsignedLong
unsignedInt
unsignedShort
unsignedByte
![Page 18: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/18.jpg)
minOccurs/maxOccursminOccurs/maxOccurs
Die Anzahl möglicher Wiederholungen eines Elementes wird mit den Attributen minOccurs und maxOccurs angegeben:
<xs:complexType name="familyType"><xs:complexType name="familyType">
<xs:sequence>
<xs:element name="lastName" type="xs:string"/>
<xs:element name="childName" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
![Page 19: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/19.jpg)
Deklaration von AttributenDeklaration von Attributen
Attribute haben einen einfachen einfachen Typ.
Nur komplexe Elemente können Attribute enthalten.
Ein Beispiel<person gender="male">Peter Muster</person>
die Attribut-Deklaration:<xs:attribute name="gender" type="xs:string"/>
![Page 20: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/20.jpg)
Attribut DeklarationenAttribut Deklarationen
Attribut mit Default Wert:<xs:attribute name="lang" type="xs:string" default="EN"/>
Attribut mit fixem Wert:<xs:attribute name="lang" type="xs:string" fixed="EN"/><xs:attribute name="lang" type="xs:string" fixed="EN"/>
optionales Attribut: <xs:attribute name="lang" type="xs:string" use="optional"/>
Attribut muss vorhanden sein:<xs:attribute name="lang" type="xs:string" use="required"/>
Vorsicht! Attribute sind nur obligatorisch mit use=“required“
![Page 21: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/21.jpg)
ListList--TypenTypen
Ein List-Typ definiert eine Liste von einfachen Typen:
Beispiel: Liste von ganzen Zahlen<xs:simpleType name="regNumberType"><xs:simpleType name="regNumberType"><xs:list itemType="xs:int"/>
</xs:simpleType>
![Page 22: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/22.jpg)
UnionUnion--TypenTypen
Ein Union-Typ ist eine Vereinigung von einfachen Typen:
<xs:simpleType name="UnoType">
<xs:union memberTypes="xs:int xs:boolean"/><xs:union memberTypes="xs:int xs:boolean"/>
</xs:simpleType>
![Page 23: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/23.jpg)
Komplexe TypenKomplexe Typen
![Page 24: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/24.jpg)
Verschiedene Komplexe ElementeVerschiedene Komplexe Elemente
Elemente mit komplexe Typen können andere Elemente und/oder Attribute enthalten.
Es gibt vier Arten von komplexen Elementen• leere Elemente (die nur Attribute enthalten),• leere Elemente (die nur Attribute enthalten),• Elemente, welche nur andere Elemente enthalten,• gemischte Elemente enthalten sowohl andere
Elemente als auch Text.• Elemente mit beliebigem Inhalt
![Page 25: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/25.jpg)
Leere ElementeLeere Elemente
Ein leeres ElementEin leeres Element
<product productId="1345" />
Mögliches XML Schema:Mögliches XML Schema:Mögliches XML Schema:Mögliches XML Schema:
<xs:complexType name="productType"><xs:attribute name="productId"
type="xs:positiveInteger"/></xs:complexType>
<xs:element name="product" type="productType"/>
![Page 26: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/26.jpg)
Element mit Text und Attribut: simpleContentElement mit Text und Attribut: simpleContent
<shoeSize country="france">35</shoeSize>
Ein XML SchemaEin XML Schema
<xs:complexType name="shoeSizeType" >
<xs:simpleContent><xs:simpleContent>
<xs:extension base="xs:positiveInteger">
<xs:attribute name="country"
type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
![Page 27: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/27.jpg)
Element mit Kind Elementen: sequenceElement mit Kind Elementen: sequence
<person>
<firstName>John</firstName>
<lastName>Smith</lastName>
</person>
Ein XML SchemaEin XML SchemaEin XML SchemaEin XML Schema
<xs:complexType name="personType">
<xs:sequence>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
![Page 28: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/28.jpg)
Komplexer Typ mit AttributKomplexer Typ mit Attribut
<person gender="male"><firstName>John</firstName><lastName>Smith</lastName>
</person>
Das XML SchemaDas XML SchemaDas XML SchemaDas XML Schema
<xs:complexType name="personType"><xs:sequence><xs:element name="firstName" type="xs:string"/><xs:element name="lastName" type="xs:string"/>
</xs:sequence><xs:attribute name="gender" type="xs:string"/>
</xs:complexType>
![Page 29: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/29.jpg)
Element mit Kind Elementen: allElement mit Kind Elementen: all
Der all Indikator gibt an, dass die Kindknoten in beliebiger Reihenfolge:
<xs:complexType name="personType">
<xs:all><xs:all>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:all>
</xs:complexType>
![Page 30: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/30.jpg)
Element mit Kind Elementen: choiceElement mit Kind Elementen: choice
Der Choice Indikator bestimmt, dass entweder das eine oder das andere Kind vorkommen soll:
<xs:complexType name="personType" >
<xs:choice><xs:choice>
<xs:element name="employee" type="employeeType"/>
<xs:element name="member" type="memberType"/>
</xs:choice>
</xs:complexType>
![Page 31: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/31.jpg)
Elemente mit gemischtem InhaltElemente mit gemischtem Inhalt
<letter> Dear Mr.<name>J. Smith</name>. Your order <orderid>1032</orderId> will be shipped on <shipDate>2001-07-13</shipdate>.
</letter>
XML SchemaXML Schema<xs:element name="letter"><xs:complexType mixed="true"><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="orderId" type="xs:positiveInteger"/><xs:element name="shipDate" type="xs:date"/></xs:sequence></xs:complexType></xs:element>
![Page 32: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/32.jpg)
Spezielle Schema ElementeSpezielle Schema Elemente
![Page 33: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/33.jpg)
FacettenFacetten
Einschränken dienen zur besseren Kontrolle von (akzeptierbaren) Werten von XML Elementen oder Attributen. Solche Einschränkungen nennt man Facetten (facets).
Facetten für Strings:Facetten für Strings:length, maxLength, minLength
Facetten für numerische Werte:totalDigits, fractionDigits, maxExclusive, minExclusive, maxInclusive, minInclusive
Facetten für Zeit-Typen:maxExclusive, minExclusive, maxInclusive, minInclusive
Für alle Typen:enumeration, pattern, whiteSpace
![Page 34: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/34.jpg)
enumeration Definiert eine Liste von möglichen Werten
fractionDigits Spezifiziert die maximal erlaubte Anzahl Dezimalstellen (grösser oder gleich null)
length Spezifiziert die (exakte!) Anzahl Buchstaben oder Listenelemente (grösser oder gleich null)
maxExclusive Spezifiziert eine obere Schranke für numerische Werte (Werte sind kleiner!)
maxInclusive Spezifiziert eine obere Schranke für numerische Werte (kleiner oder gleich)
maxLength Spezifiziert die maximal erlaubte Anzahl Buchstaben oder Listenelemente (grösser oder
gleich null)
minExclusive Spezifiziert eine untere Schranke für numerische Werte (Werte sind grösser!)
minInclusive Spezifiziert eine untere Schranke für numerische Werte (grösser oder gleich)
minLength Spezifiziert die minimale Anzahl Buchstaben oder Listenelemente (grösser oder gleich null)
pattern Definiert ein Muster für die erlaubten Werte
totalDigits Spezifiziert die maximale Anzahl Ziffern (grösser oder gleich null)
whiteSpace Spezifiziert, wie Whitespaces (newlines, tabs, ...) behandelt werden sollen
![Page 35: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/35.jpg)
Beispiele von FacettenBeispiele von Facetten
Erlaubte Wochentage sind Montag, Mittwoch und Samstag.
<xs:simpleType name="weekDayType"><xs:restriction base="xs:string"><xs:restriction base="xs:string">
<xs:enumeration value="Montag"/><xs:enumeration value="Mittwoch"/><xs:enumeration value="Samstag"/>
</xs:restriction></xs:simpleType>
![Page 36: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/36.jpg)
Beispiele von FacettenBeispiele von Facetten
Eine Publisher ID ist entweder von der Form P-ABC:
<xs:simpleType name="publisherIdType"><xs:restriction base="xs:string"><xs:restriction base="xs:string">
<xs:pattern value="P-[A-Z]+"/><xs:length value="5"/>
</xs:restriction></xs:simpleType>
![Page 37: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/37.jpg)
Beispiele von FacettenBeispiele von Facetten
Eine Publisher ID ist entweder von der Form P-ABC oder von der Form P-321:
<xs:simpleType name="publisherIdType"><xs:simpleType name="publisherIdType"><xs:restriction base="xs:string">
<xs:pattern value="P-[A-Z]+"/><xs:pattern value="P-[0-9]+"/><xs:length value="5"/>
</xs:restriction></xs:simpleType>
![Page 38: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/38.jpg)
Regläre AusdrückeRegläre Ausdrücke
\ Escape. Ein beliebiges Zeichen (ausser newline)X Eine Instanz von x^x Jedes Zeichen ausser x[x] Alle Zeichen in diesem Bereich () Gruppierung| Auswahl {x} x fache Wiederholung{x,} mindestens x Mal {x,y} mindestens x Mal und höchstens y Mal? Abkürzung für {0,1} * Abkürzung für {0, }+ Abkürzung für {1, }\d Abkürzung für [0-9] (digits) \D alles ausser Ziffern\s Whitespace (spaces, tabs, newlines, ...) \S alles ausser Whitespace
![Page 39: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/39.jpg)
Weitere Beispiele von FacettenWeitere Beispiele von Facetten
<xs:simpleType name="threeInitialsType"><xs:restriction base="xs:string"><xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/></xs:restriction>
</xs:simpleType>
<xs:simpleType name="myStringType"><xs:restriction base="xs:string"><xs:pattern value="([a-z0-9])*"/><xs:length value="6"/>
</xs:restriction></xs:simpleType>
![Page 40: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/40.jpg)
Weitere Beispiele von FacettenWeitere Beispiele von Facetten
<xs:restriction base="xs:string"><xs:pattern value="[A-Z]([a-z])+"/>
</xs:restriction>
<xs:restriction base="xs:string"><xs:restriction base="xs:string"><xs:pattern value="\D+"/>
</xs:restriction>
![Page 41: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/41.jpg)
Beispiele von FacettenBeispiele von Facetten
<xs:simpleType name="addressType"><xs:restriction base="xs:string"><xs:length value="8"/><xs:whiteSpace value="preserve"/>
</xs:restriction></xs:simpleType>
<xs:simpleType name="ageType"><xs:restriction base="xs:int">
<xs:minExclusive value="0"/><xs:maxInclusive value="100"/>
</xs:restriction></xs:simpleType>
![Page 42: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/42.jpg)
AssertionsAssertions
ZusicherungenZusicherungen
((ab ab Schema Schema Version 1.1)Version 1.1)
![Page 43: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/43.jpg)
ZusicherungenZusicherungen
• Mittels xs:assert können weitere Einschränkungen an Element- oder Attribut-Werte definiert werden.
• Mit Zusicherungen können verschiedene Werte in Beziehung gesetzt oder verglichen werden.
• xs:assertion erlaubt komplexe Bedingungen an (einzelne) Werte (simple Type)
![Page 44: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/44.jpg)
Zusicherungen: verschiedene NamenZusicherungen: verschiedene Namen
<xs:complexType name="nameType">
<xs:sequence>
<xs:element name="first_name" type="xs:string"/>
<xs:element name="last_name" type="xs:string"/>
</xs:sequence>
<xs:assert test="first_name != last_name"/>
</xs:complexType>
![Page 45: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/45.jpg)
Zusicherung: Zusicherung: Start Datum nach End DatumStart Datum nach End Datum
<xs:complexType name="personType">
<xs:sequence>
<xs:element name="name" type="nameType"/>
<xs:element name="address" type="addressType"/>
</xs:sequence>
<xs:attribute name="startDate" type="xs:date" /><xs:attribute name="startDate" type="xs:date" />
<xs:attribute name="endDate" type="xs:date" />
<xs:assert test="@startDate > @endDate"/>
</xs:complexType>
![Page 46: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/46.jpg)
Zusicherungen: Zusicherungen: Anzahl EigenschaftenAnzahl Eigenschaften
<xs:complexType name="personType"><xs:sequence><xs:element name="name" type="nameType"/><xs:element maxOccurs="9" name="profession" type="xs:string"/><xs:element maxOccurs="9" name="hobby" type="xs:string"/>
</xs:sequence><xs:attribute name="properties" type="xs:int"/><xs:attribute name="properties" type="xs:int"/><xs:assert test="@properties eq count(profession | hobby)"/>
</xs:complexType><person properties="3">
<name>
<first_name>Leonhard</first_name>
<last_name>Euler</last_name>
</name>
<profession>physicist</profession>
gesamt höchstens 3 <profession>mathematician</profession>
<hobby>astronomy</hobby>
</person>
![Page 47: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/47.jpg)
Zusicherungen: Zusicherungen: Spezieller simple TypeSpezieller simple Type
Einfacher Typ mit speziellen Anforderungenxs: assertion
<xs:simpleType name="spezType">
<xs:restriction base="xs:int">
<xs:assertion test="($value < 1800 or $value > 1900)
and $value != 0"/>and $value != 0"/>
</xs:restriction>
</xs:simpleType>
Nur ungerade Zahlen<xs:simpleType name="oddType">
<xs:restriction base="xs:int">
<xs:assertion test="($value mod 2 != 0)"/>
</xs:restriction>
</xs:simpleType>
![Page 48: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/48.jpg)
Schlüssel und ReferenzenSchlüssel und Referenzen
![Page 49: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/49.jpg)
SchlüsselSchlüssel
Mittels key können Elemente oder Attribute als Schlüssel definiert und damit die Eindeutigkeit innerhalb eines Instanzdokuments garantiert werden
<xs:key name="departmentID"><xs:selector xpath="department"/><xs:selector xpath="department"/><xs:field xpath="@id"/>
</xs:key>
<xs:unique name="uniqueProfession"><xs:selector xpath="profession"/><xs:field xpath="."/>
</xs:unique>
![Page 50: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/50.jpg)
Referenzen auf SchlüsselReferenzen auf Schlüssel
Mittels keyref können Referenzen auf Schlüssel definiert werden
<xs:keyref name="departmentRef" refer=" departmentID"><xs:keyref name="departmentRef" refer=" departmentID">
<xs:selector xpath="employee/department"/>
<xs:field xpath="@ref"/>
</xs:keyref>
![Page 51: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/51.jpg)
Beispiel key / keyrefBeispiel key / keyref
<xs:element name="people">
<xs:complexType>
...
</xs:complexType>
<xs:key name="addressID">
<xs:selector xpath="address"/><xs:selector xpath="address"/>
<xs:field xpath="@id"/>
</xs:key>
<xs:keyref name="bornRef" refer="addressID">
<xs:selector xpath="person/born"/>
<xs:field xpath="@addressRef"/>
</xs:keyref>...
</xs:element>
![Page 52: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/52.jpg)
Beispiel key / keyrefBeispiel key / keyref
<person><name>
<firstName>Alan</firstName><lastName>Turing</lastName>
</name><born date="1912" addressRef="gbl"/> <!-- Referenz auf Adresse -->
<died date="1954" addressRef="gbc"/> <!-- Referenz auf Adresse -->
. . . . . . </person>
<address id="gbl"> <!-- Schlüssel -->
<country>Great Britain</country><city>London</city>
</address><address id="gbc"> <!-- Schlüssel -->
<country>Great Britain</country><city>Cambridge</city>
</address>
![Page 53: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/53.jpg)
Schlüssel / UniqueSchlüssel / Unique
Mittels key können Elemente oder Attribute als Schlüssel definiert und damit die Eindeutigkeit innerhalb eines Instanzdokuments garantiert werden
<xs:key name="departmentID"><xs:selector xpath="department"/><xs:selector xpath="department"/><xs:field xpath="@id"/>
</xs:key>
<xs:unique name="uniqueProfession"><xs:selector xpath="profession"/><xs:field xpath="."/>
</xs:unique>
![Page 54: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/54.jpg)
AnmerkungenAnmerkungen
Anmerkungen (xs:annotation) enthalten Informationen für den Benutzer (xs:documentation) oder für eine Applikation (xs:appinfo)
<xs:annotation>
<xs:documentation xml:lang="en">
This is a schema for address books
</xs:documentation>
</xs:annotation>
![Page 55: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/55.jpg)
Einfügen von SchematasEinfügen von Schematas
Mittels include kann ein anderes Schema eingefügt werden, welches denselben Target-Namespace hat:
<xs:include schemaLocation="address.xsd"/>
Mittels import kann ein Schema eingefügt werden, welches einen andern Target-Namespace hat:
<xs:import
namespace="http://www.example.org/address"
schemaLocation="address.xsd"/>
![Page 56: XML Schema (XSD) - sws.bfh.chamrhein/Skripten/XML/XSDFolien.pdf · Ein XML Schema definiert • die Elemente, welche im Dokument vorkommen dürfen • die Attribute, welche vorkommen](https://reader030.vdokument.com/reader030/viewer/2022021511/5b153ed87f8b9a201a8e4369/html5/thumbnails/56.jpg)
Überschreiben von SchemataÜberschreiben von Schemata--TypenTypen
Ab Schema Version 1.1 können (einzelne) Schema Typen in einem anderen Schema überschrieben und dadurch neu definiert werden.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1"><xs:override schemaLocation="OverrideBase.xsd"><xs:override schemaLocation="OverrideBase.xsd"><xs:simpleType name="DressSizeType"><xs:restriction base="xs:integer"><xs:minInclusive value="2"/><xs:maxInclusive value="16"/>
</xs:restriction></xs:simpleType>
</xs:override><xs:element name="newSize" type="DressSizeType"/>
</xs:schema>