XML-Schema
Im Fach SOA, ISM 2008
Gunther Heinrich, Tobias Steimer
2Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
Ziel der Präsentation
Einführung in die Thematik XML und XML-Schema
Kennenlernen der technischen Grundlagen von XML-Schema
Wie wird ein XML-Schema Schritt für Schritt aufgebaut
Vermittlung des grundlegenden Konzeptes von XML-Schema
3Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
Agenda
1 Einführung1.1 Was ist XML?
1.2 Was ist XML Schema?
1.3 Schema in der Praxis
1.4 Ein einfaches XML Schema
2 Datentypen2.1 Atomare Datentypen
2.2 SimpleType
2.3 ComplexType
2.4 Elemente und Attribute
3 Definition von eigenen Datentypen3.1 Eigene Datentypen - Fallbeispiel
3.2 Das Bestellobjekt
3.3 Die Bestellposition
3.4 Das XML-Schema
3.5 Die Validierung
4 Namespaces
4.1 Was ist ein Namespace?
4.2 Anpassung der Dateien
4.3 Strukturansicht
4.4 Anforderung
5 Import von Schemata5.1 Was ist ein Import?
5.2 Grobes Vorgehen
5.3 Import am Beispiel Kunde
6 Praxisteil
1 Einführung
1.0 Einordnung der Thematik
1.1 Was ist XML?
1.2 Was ist XML-Schema?
1.3 Schema in der Praxis
1.4 Ein einfaches Schema
Service Oriented Architecture:
XML Schema zur Definition von
Geschäftsobjekten
5Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
1.0 Einordnung der Thematik
XML-Schema bzw. XML als Basis höherwertiger Dienste im Kontext SOA
XML-Schema
XML
BPELWSDL SOAP
„You cannot make a move within an SOA without involving XML“Thomas Erl (2004)
6Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
1.1 Was ist XML?
Die eXtensible Markup Language ist…
…wie HTML eine Auszeichnungssprache
…wie HTML die Tochter von SGML
…aber vielseitiger als HTML
SGML
XML HTML
<tag>Text
Text
XML
HTML
7Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
1.1 Was ist XML?
Die eXtensible Markup Language erlaubt im Gegensatz zu HTML…
<Ebene 1><Ebene 1a></Ebene 1a>
</Ebene 1>…
…die Speicherung hierarchisch strukturierter
Daten
…den Datenaustausch zwischen unabhängigen
Computersystemen
…die Nutzung von eigenen Tags
Grundsätzlich alles möglich, solange
wohlgeformt
<Buch><Titel>…</Titel><Autor>…</Autor><ISBN>…</ISBN>
</Buch>
• genau ein Wurzelelement• Beginn- und End-Tag <tag></tag>
8Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
1.1 Was ist XML Schema? (Next generation DTD)
„Sprache“ zur Beschreibung und Beschränkung von XML Inhalten
WIE sollen WO und in WELCHER FORM Elemente in einer XML-Datei enthalten sein?
“Grammatik” von XML zur unabhängigen Definition von Datentypen
Abgrenzung XML Schema - Document Type Definition (DTD):
<xs:schema><xs:element></xs:element></xs:schema>
XML-Syntax zur Erstellungdes Schemas
A
B
Anwendung von Namespaces
String
Integer
…
Verschiedene Datentypen
meinBuch
Bestellung
…
Definition von eigenen Datentypen
9Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
1.2 XML-Schema in der Praxis
XML-Parser
XML-Dokument
Schema-Dokument
Wohl-geformt
Valide
10Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
1.3 Ein einfaches Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Materialname" type="xs:string"/>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<Materialname>Bestellung</Materialname>
</xml>
1 Einführung
2 Datentypen
2.1 Atomare Datentypen
2.2 SimpleType
2.3 ComplexType
2.4 Elemente und Attribute
Service Oriented Architecture:
XML Schema zur Definition von
Geschäftsobjekten
12Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
2.1 Atomare Datentypen
Grundlage für komplexe Datentypen
„kleiner geht nicht“
Es gibt insgesamt 19 Datentypen, u.a.:
BooleanWahr / falsch
String„Dies ist ein Text“
Float“12.78e-2”
Date2008-10-24 (US)
Time13:20:00-05:00
Decimal-2,44
<xs:element name="Produkt" type="xs:string"/>
13Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
2.2 SimpleType
Datentyp zur Restriktion von Inhalten und Ableitung von vorhandenen atomaren Datentypen
Wichtige Methoden von SimpleType:
RestrictionEingeschränkter
Wertebereich
ListListe von Werten eines einfachen Datentyps
UnionVereinigung von atomaren
Datentypen
• Anzahl der Elemente• Inhalt der Elemente
Beispiel:„24“ / „small“
(Integer / String)
• Beispiel:„1 24 25 278“
14Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
2.2 SimpleType – Beispiel Restriction
[…]
<xs:element name="Menge">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="99"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
[…] <?xml version="1.0"…?>
<Menge>3</Menge>
<Menge>301</Menge>
</xml>
15Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
2.3 ComplexType
Dient wie SimpleType zur Restriktion von Inhalten
Aber das ComplexType kann im Gegensatz zum SimpleType…
A
B
…andere Elemente enthalten
…erweitert werden(„Quasi-Vererbung“)
…Attribute besitzen …keinen Inhalt besitzen
A
A1="…" A2="…"
A
AB
16Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
2.3 ComplexType – Arten
ComplexTypes werden neben Attributen mit folgenden „Befehlen“ definiert:
Sequence
All
Choice
Eine Menge von Elementen mit bestimmter Reihenfolge
eine Menge von Elementen die alle verwendet werden müssen (Reihenfolge unwichtig)
Eine Menge von Elementen von denen einesgewählt werden muss
17Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
2.3 ComplexType – Beispiel
[…]
<xs:element name="material">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="firma" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
[…]
<material>
<name>…</name>
<firma>…</firma>
</material>
<material>
<firma>…</firma>
<name>…</name>
</material>
18Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
2.4 Elemente und Attribute
Element
<buch><titel>SOA in der Praxis</titel>
</buch>
Attribut
<buch titel=“SOA in der Praxis”>…
</buch>
VS.
Es gibt keine einheitliche Regelung, wann welches Format genutzt werden soll
Im Zweifel eher Elemente verwenden Ein Element mit zehn Attributen ist unleserlich
Elemente können andere Elemente aufnehmen Strukturierung, flexibler
Attribute sinnvoll als „erklärende“ Beschreibung der Daten bzw. Maßeinheiten:<Geschwindigkeit einheit="km">37</Geschwindigkeit>
19Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
Pause
1 Einführung
2 Datentypen
3 Definition von eigenen
Datentypen
3.1 Eigene Datentypen – Fallbeispiel
3.2 Das Bestellobjekt
3.3 Die Bestellposition
3.4 Die XMl-Schema
3.5 Die Validierung
Service Oriented Architecture:
XML Schema zur Definition von
Geschäftsobjekten
21Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.1 Eigene Datentypen – Fallbeispiel
Inhaltliche Sicht
Informations-Sicht
(was muss man wissen)
Geschäftsobjekt-Sicht
Kunde bestellt ein Produkt
KundeninfoName
Adresse…
ProduktinfoName
Nummer…
BestellinfoDatumMenge
…
Kundenobjekt Produktobjekt Bestellobjekt
22Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.1 Fallbeispiel – Die XML-Datei
<?xml version="1.0" encoding="utf-8"?>
<Bestellung bestellnummer="DTH-456789-3" bestelldatum="2008-10-23">
<Kunde>
*…+
</Kunde>
<Bestellposition>
<Produkt>
<Produktnummer>1118799</Produktnummer>
<Produktbezeichnung>Schrauben</Produktbezeichnung>
<Produktpreis>23.99</Produktpreis>
<InklMwst>19</InklMwst>
</Produkt>
<Bestellmenge>1</Bestellmenge>
</Bestellposition>
</Bestellung>
Kunde
Bestellung(Kerndaten)
Produkt
23Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.2 Der Rahmen der Schema
<?xml version="1.0" encoding="utf-8"?>
*…+
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" >
*…+
</xs:schema>
Definition eines Namespaces
24Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.2 Das Bestellobjekt
<Bestellung bestellnummer="DTH-456789-3" bestelldatum="2008-10-23"></Bestellung>
<xs:element name="Bestellung" type="BestellungTyp"/>
<xs:complexType name="BestellungTyp">
<xs:attribute name="bestellnummer" type="xs:string" />
<xs:attribute name="bestelldatum" type="xs:date" />
</xs:complexType>
Problem: xs:string erlaubt jeden textuellen Inhalt.
25Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.2 Das Bestellobjekt
Einschränkung der erlaubten Inhalte durch Regular Expressions:
<xs:complexType name="BestellungTyp">
<xs:attribute name="bestellnummer" type="xs:string" />
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3} - [0-9]{6} - [1-5]{1}" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="bestelldatum" type="xs:date"/>
</xs:complexType>
Drei Buchstaben Eine Ziffer
Sechs Ziffern
Falsch
26Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.2 Das Bestellobjekt
<Bestellung bestellnummer="DTH-456789-3" bestelldatum="2008-10-23">
<Kunde></Kunde>
<Bestellposition>…</Bestellposition>
</Bestellung>
Anforderungen für die Schema:
• Die Bestellung enthält: Kunde und Bestellposition
• Festgelegte Reihenfolge: Kunde, Bestellposition
• Der Kunde muss genau einmal, die Bestellpositionen mindestens einmal vorkommen
27Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.2 Das Bestellobjekt
Aus den Anforderungen ergibt sich folgendes Schema:
<xs:complexType name="BestellungTyp">
<xs:sequence>
<xs:element name="Kunde" type="KundeTyp" minOccurs="1" maxOccurs="1"/>
<xs:element name="Bestellposition" type="BestellpositionTyp" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="bestellnummer">
<xs:simpleType>
[…]
Genau einmal
Mindestens einmal
28Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.3 Die Bestellposition
Die Bestellposition in der XML:
<Bestellposition>
<Produkt>
<Produktnummer>1118799</Produktnummer>
<Produktbezeichnung>Schrauben</Produktbezeichnung>
<Produktpreis>23.99</Produktpreis>
<InklMwst>19</InklMwst>
</Produkt>
<Bestellmenge>1</Bestellmenge>
</Bestellposition>
29Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.3 Die Bestellposition
Wir erinnern uns:
die Bestellposition wurde bereits definiert mit:<xs:element name="Bestellposition" type="BestellpositionTyp" minOccurs="1" maxOccurs="unbounded"/>
die Bestellposition (Produkt und Bestellmenge) wird als eigenständiges Objekt vom Typ ComplexType hinzugefügt,
sie wird nicht direkt mit der Bestellung verschachtelt
30Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.3 Die Bestellposition
Die Bestellposition in der XML-Schema: <Bestellposition>
<Produkt>
<Produktnummer>1118799</Produktnummer>
<Produktbez>Schrauben</Produktbez>
<Produktpreis>23.99</Produktpreis>
<InklMwst>19</InklMwst>
</Produkt>
<Bestellmenge>1</Bestellmenge>
</Bestellposition>
<xs:complexType name="BestellpositionTyp">
<xs:sequence>
<xs:element name="Produkt" minOccurs="1" maxOccurs="1">
*…+
</xs: element>
<xs:element name="Bestellmenge" minOccurs="1" maxOccurs="1">
*…+
</xs: element>
</xs:sequence>
31Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.3 Die Bestellposition
Die Bestellposition in der XML-Schema: <Bestellposition>
<Produkt>
<Produktnummer>1118799</Produktnummer>
<Produktbez>Schrauben</Produktbez>
<Produktpreis>23.99</Produktpreis>
<InklMwst>19</InklMwst>
</Produkt>
<Bestellmenge>1</Bestellmenge>
</Bestellposition>
<xs:element name="Produkt" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:element name="Produktnummer" type="xs:integer"/>
<xs:element name="Produktbezeichnung" type="xs:string"/>
<xs:element name="Produktpreis" type="xs:decimal"/>
<xs:element name="InklMwst" type="xs:decimal"/>
</xs:complexType>
</xs: element>
<xs:sequence>
</xs:sequence>
<xs:????????>
<xs:????????>
32Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.3 Die Bestellposition
Die Bestellposition in der XML-Schema: <Bestellposition>
<Produkt>
<Produktnummer>1118799</Produktnummer>
<Produktbez>Schrauben</Produktbez>
<Produktpreis>23.99</Produktpreis>
<InklMwst>19</InklMwst>
</Produkt>
<Bestellmenge>1</Bestellmenge>
</Bestellposition>
<xs:element name="Bestellmenge" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
33Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.4 Die XML-Schema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Bestellung" type="BestellungTyp"/>
<xs:complexType name="BestellungTyp">
<xs:sequence>
<xs:element name="Kunde" type="KundeTyp" minOccurs="1" maxOccurs="1"/>
<xs:element name="Bestellposition" type="BestellpositionTyp" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="bestellnummer">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3}-[0-9]{6}-[1-5]{1}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="bestelldatum" type="xs:date"/>
</xs:complexType>
[…]
<xs:complexType name="BestellpositionTyp">
<xs:sequence>
<xs:element name="Produkt" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Produktnummer" type="xs:integer"/>
<xs:element name="Produktbezeichnung" type="xs:string"/>
<xs:element name="Produktpreis" type="xs:decimal"/>
<xs:element name="InklMwst" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Bestellmenge" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
34Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
3.5 Die Validierung
Online-Validierung der XML
Validierung der XML in NetBeans
Cannot find the declaration of element 'Bestellung'
Warum?
Fehlender Namespace bzw. Target-Namespace
Grund
1 Einführung
2 Datentypen
3 Definition von eigenen Datentypen
4 Namespaces
4.1 Was ist ein Namespace
4.2 Anpassung der XML und XML-Schema
4.3 Strukturansicht
4.4 Erneutes Problem
Service Oriented Architecture:
XML Schema zur Definition von
Geschäftsobjekten
36Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
4.1 Was ist ein Namespace?
Eine Namespace ist eine Sammlung von Elementtypen und Attributnamen und dient u.a. dem …
…Vermeiden von Konflikten
…Wiederverwenden von Definitionen aus anderen
Schemata
…dem Erweitern von bestehenden Schemata
Schema
S1 S2
<Alt>
<Alt>
Schema 1
Schema 1a
und damit dem…
37Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
4.2 Anpassung der XML und XML-Schema
<Bestellung bestellnummer="DTH-456789-3" bestelldatum="2008-10-23">
<Bestellung xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xml.netbeans.org/schema/Bestellung Bestellung.xsd" xmlns="http://xml.netbeans.org/schema/Bestellung"
bestellnummer="ABC-123456-1" bestelldatum="2008-10-23">
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://xml.netbeans.org/schema/Bestellung"xmlns="http://xml.netbeans.org/schema/Bestellung"elementFormDefault="qualified">
XML Schema:
XML:
38Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
4.3 Die Verknüpfungen in der Strukturansicht
XML-Datei XML-Schema Bestellung
Namespace Bestellungbenutzt beschreibt
benutzt
NamespaceXML-Schema
NamespaceXML-Schema-
Instance
benutzt
39Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
4.4 Anforderung
Globale Wiederverwendbarkeit der
definierten Elemente
1. Herauslösen der Definitionen in jeweils eigene Schemata2. Import dieser Schemata in Bestellung.xsd
1 Einführung
2 Datentypen
3 Eigene Datentypen
4 Namespaces
5 Import von Schemata
5.1 Was ein Import?
5.2 Grobes Vorgehen
5.3 Import am Beispiel Kunde
Service Oriented Architecture:
XML Schema zur Definition von
Geschäftsobjekten
41Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
Import = Wiederverwendung von Schema-Bestandteilen aus unterschiedlichen
Namensräumen
5.1 Was ist ein Import?
Bestellung.xsd
Kunde.xsdBestellposition.xsd
Evtl. weitere Typen eines
Schemas
…
42Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
5.3 Import am Beispiel Kunde
<xs:schema[…]xmlns:k="http://xml.netbeans.org/schema/Kunde"[…]>
<xs:import namespace="http://xml.netbeans.org/schema/Kunde" schemaLocation="Kunde.xsd"/>
[…]<xs:element name="Kunde" type= "k:KundeTyp"...
XML Schema der Bestellung:
<Bestellung […] xmlns:k="http://xml.netbeans.org/schema/Kunde"[…]>
<Kunde>
<k:Kundennummer>…</k:Kundennummer><k:Name>
<k:Vorname>…</k:Vorname><k:Nachname>…</k:Nachname>
[…]
XML der Bestellung mit Prefix:
Anmerkung: In der Praxis sollten Namespaces so verwendet werden, dass diese nicht vom Nutzer explizit angegeben werden müssen. Prefix dient hier lediglich zur Hervorhebung.
43Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
Fragen?Kenntnisse werden im praktischen Teil benötigt…
44Gunther Heinrich, Tobias Steimer | Information Systems and Services Master | Hochschule der Medien
04. 12. 2008
Quellen
Erl, T. (2004):
XML and SOA, http://www.idealliance.org/proceedings/xml04/papers/91/xml_soa_paper.pdf
Skulschus M., Wiederstein M. (2004):
XML Schema - Grundlagen, Praxis, Referenz, Galileo Computing
Daum, B. (2003):
Modeling Business Objects with XML Schema, dpunkt Verlag
Bradley, N. (2003):
The XML Schema companion, Adisson-Wesley
Wittenbrink H. et al. (2003):XML – Wissen das sich auszahlt, TEIA Lehrbuchverlag
Josuttis, N. (2008):
SOA in der Praxis, dpunkt Verlag
W3C (2006):
XML-Schema, http://www.w3.org/XML/Schema (Zugriff: 15.11.2008)
Vielen Dank für die
Aufmerksamkeit
Service Oriented Architecture:
XML Schema zur Definition von
Geschäftsobjekten
10 Minuten Pause
1 Einführung
2 Datentypen
3 Eigene Datentypen
4 Namespaces
5 Import von Schemata
6 Praxisteil
Service Oriented Architecture:
XML Schema zur Definition von
Geschäftsobjekten