XML – Grundlagen und Anwendungen Teil 4: Modellierung von Datenmodellen mit XML-Schema Prof. Dr....

21
XML – Grundlagen und Anwendungen Teil 4: Modellierung von Datenmodellen mit XML-Schema Prof. Dr. Michael Löwe, FHDW Hannover

Transcript of XML – Grundlagen und Anwendungen Teil 4: Modellierung von Datenmodellen mit XML-Schema Prof. Dr....

XML – Grundlagen und Anwendungen

Teil 4: Modellierung von Datenmodellen mit XML-Schema

Prof. Dr. Michael Löwe, FHDW Hannover

XML Grundlagen und Anwendungen

2

MotivationInternet verändert sich

vom Hypertext (WWW) für den menschlichen Betrachterzur Informationsinfrastruktur für IT-Services (SOA).

Die Kommunikationsinhalte verändern sichvon Dokumenten (Texte mit Reihenfolge und Gliederung)zu Datenstrukturen (Daten, Objekte und Referenzen).

HTTP, HTML und XML sindweniger sichtbarer Selbstzweck undmehr Mittel zum Zweck im Hintergrund (RPC, etc.).

Abbildung der objektorientierten Modelle muss möglich sein.

XML Grundlagen und Anwendungen

3

Kritik an DTDsNur Objekte keine TypenZu wenig Basistypen (kein string, integer etc.)Nur Komposition keine SpezialisierungNur globale Referenzen (ID, IDREF)Kein Konzept für NamensräumeSelbst nicht XML.

XML Grundlagen und Anwendungen

4

InhaltXML-Schema verbessert DTDs durch:

Reichhaltige Basistypen Built-in‘sTrennung von Element und Typ KlassenDifferenzierte Schlüssel AssoziationenTyperweiterung SpezialisierungErsetzungsgruppen „Polymorphie“

XML Grundlagen und Anwendungen

5

BasisdatentypendateTime

boolean

float

string

integer

byte

NMTOKENS

XML Grundlagen und Anwendungen

6

Definition von BasistypenAufzählungLängenbeschränkungenWertbegrenzungen (untere / obere Schranken)White-Space-EliminierungReguläre AusdrückeVereinigungListen

XML Grundlagen und Anwendungen

7

Klassen als Elemente<!ELEMENT Person EMPTY><!ATTLIST Person

name CDATA #REQUIREDvorname CDATA #REQUIREDgeburtstag CDATA #REQUIRED>

Komposition:<!ELEMENT LebensVersicherungsVertrag

(Person, Person, …) >

Spezialisierung<!ELEMENT Frau (Person)>

Personname: stringvorname: stringgeburtstag: date

XML Grundlagen und Anwendungen

8

Klassen als Schema-Elemente<element name=„Person“>

<complexType><attribute name=„name“ type=„string“ use=„Required“/><attribute name=„vorname“ type=„string“ use=„Required“/><attribute name=„geburtstag“ type=„date“ use=„Required“/></complexType>

</element>

Komposition:<element name=„LebensVersicherungsVertrag“>

<complexType> <sequence> <element ref=„Person“>

<element ref=„Person“>….. </sequence></complexType>

</element>

XML Grundlagen und Anwendungen

9

Klassen als Schema-Typen<element name=„Person“>

<complexType><attribute> name=„name“ type=„string“ use=„Required“/><attribute> name=„vorname“ type=„string“ use=„Required“/><attribute> name=„geburtstag“ type=„date“ use=„Required“/>

</complexType></element>Komposition:<element name=„LebensVersicherungsVertrag“>

<complexType> <sequence> <element ref=„Person“>

<element ref=„Person“>…..

</sequence></complexType>

</element>

<element name=„person“ type=„Person><complexType name=„Person“>

<attribute> name=„name“ type=„string“ use=„Required“/><attribute> name=„vorname“ type=„string“ use=„Required“/><attribute> name=„geburtstag“ type=„date“ use=„Required“/>

</complexType>

Komposition:<element name=„LebensVersicherungsVertrag“>

<complexType> <sequence> <element ref=„person“>

<element ref=„person“>…..

</sequence></complexType>

</element>

<complexType name=„Person“><attribute> name=„name“ type=„string“ use=„Required“/><attribute> name=„vorname“ type=„string“ use=„Required“/><attribute> name=„geburtstag“ type=„date“ use=„Required“/>

</complexType>

Komposition:<element name=„LebensVersicherungsVertrag“>

<complexType> <sequence> <element name=„versicherungsnehmer“ type=„Person“>

<element name=„versichertePerson“ type=„Person“>…..

</sequence></complexType>

</element>

LebenVertrag

Personname: stringvorname: stringgeburtstag: dateV

ersNehm

er Ver

sPer

son

XML Grundlagen und Anwendungen

10

Komposition vs. Assoziation<complexType name=„Person“>

<attribute> name=„name“ type=„string“ use=„Required“/><attribute> name=„vorname“ type=„string“ use=„Required“/><attribute> name=„geburtstag“ type=„date“ use=„Required“/>

</complexType>

Komposition:<element name=„LebensVersicherungsVertrag“>

<complexType> <sequence> <element name=„versicherungsnehmer“ type=„Person“>

<element name=„versichertePerson“ type=„Person“>…..

</sequence></complexType>

</element>

LebenVertrag

Personname: stringvorname: stringgeburtstag: dateV

ersNehm

er Ver

sPer

son

<complexType name=„Person“><attribute> name=„id“ type=„ID“ use=„Required“/><attribute> name=„name“ type=„string“ use=„Required“/><attribute> name=„vorname“ type=„string“ use=„Required“/><attribute> name=„geburtstag“ type=„date“ use=„Required“/>

</complexType>

Assoziation:<element name=„LebensVersicherungsVertrag“> <complexType> <attribute> name=„versNehmer“ type=„IDREF“ use=„Required“/>

<attribute> name=„versPerson“ type=„IDREF“ use=„Required“/> </complexType></element>

<complexType name=„Person“><attribute> name=„id“ type=„int“ use=„Required“/>……

</complexType>

<complexType name=„LVVertrag“> <attribute> name=„versNehmer“ type=„int“ use=„Required“/> <attribute> name=„versPerson“ type=„int“ use=„Required“/></complexType>

<element name=„System“> <complexType> <choice maxOccurs=„unbounded“>

<element name=„person“ type=„Person“/> <element name=„vertrag“ type=„LVVertrag“/> </choice>

</complexType></element>

<complexType name=„Person“><attribute> name=„id“ type=„int“ use=„Required“/>……

</complexType>

<complexType name=„LVVertrag“> <attribute> name=„versNehmer“ type=„int“ use=„Required“/> <attribute> name=„versPerson“ type=„int“ use=„Required“/></complexType>

<element name=„System“> <complexType> <element name=„person“… </complexType> <key name=„personKey“> <selector xpath=„person“/> <field xpath=„@id“/> </key></element>

<complexType name=„Person“><attribute> name=„id“ type=„int“ use=„Required“/>

</complexType>

<complexType name=„LVVertrag“> <attribute> name=„versNehmer“ type=„int“ use=„Required“/> <attribute> name=„versPerson“ type=„int“ use=„Required“/></complexType>

<element name=„System“> <complexType> <element name=„vertrag“….</complexType> <key name=„personKey“>…..</key> <keyref name=„versNehmerRef“ refer=„personKey“> <selector xpath=„vertrag“/> <field xpath=„@versNehmer“/> </keyref></element>

XML Grundlagen und Anwendungen

11

Typen und System<complexType name=„T1“> ….. </complexType><complexType name=„T2“> ….. </complexType> …..<complexType name=„System“>

<choice maxOccurrs=„unbounded“> <element name=„topElement“ type=„topT1“/> <element name=„topElement“ type=„topT2“/>…….</choice>

</complexType><element name=„system“ type=„System“>

<key name=„K1“….<key name=„K2“….<keyref name=„KR1“….<keyref name=„KR2“….

</element>

XML Grundlagen und Anwendungen

12

Mengen-wertige Relationen<complexType name=„Person“>

<sequence> <element name=„vertrag“ minOccurs=„0“ maxOccurs=„unbounded“> <complexType> <attribute name=„ref“ type=„int“/> </complexType> </element> <element name=„adresse“ maxOccurs=„unbounded“>

….. </element> </sequence>

</complexType>

XML Grundlagen und Anwendungen

13

Vererbung auf Typen<complexType name=„Adresse“ abstract=„true“>

<attribute name=„PLZ“ type=„string“/><attribute name=„ort“ type=„string“/>

</complexType>

<complexType name=„PostfachAdresse“><complexContent> <extension base=„Adresse“><attribute name=„postFachNr“ type=„int“/> </extension></complexContent>

</complexType>

<complexType name=„StrassenAdresse“> …..

Adresse

StrassenAdresse

PostfachAdresse

XML Grundlagen und Anwendungen

14

Vererbung auf Elementen<complexType name=„Adresse“ abstract=„true“> ….</complexType>

<complexType name=„PostfachAdresse“><complexContent> <extension base=„Adresse“>….

</complexType>

<complexType name=„StrassenAdresse“><complexContent> <extension base=„Adresse“>….

</complexType>

<element name=„adresse“ type=„Adresse“ abstract=„true“/><element name=„pfAdresse“ type=„PostfachAdresse“ substitutionGroup=„adresse“/><element name=„stAdresse“ type=„StrassenAdresse“substitutionGroup=„adresse“/>

Adresse

StrassenAdresse

PostfachAdresse

XML Grundlagen und Anwendungen

15

ÜberblickElementdefinition:<element name=„…“ type=„…“/>

Name eines öffentlichen Typs muss angegeben werden

<element name=„…“/><complexType>

Hier muss der private Typ definiert werden

</complexType></element>

XML Grundlagen und Anwendungen

16

ÜberblickTypedefinition:<complexType …ggf. Namensangabe..>

<complexContent> <extension base=„…“> Inhaltsspezikation mit <sequence> und <choice>

Elemente in den Sequenzen und Auswahlen Kardinalität durch Attribute minOccurs und maxOccurs (Standardwert 1)

Attributeliste: <attribute name=„..“ type=„..“ use=„..“/> </extension></complexContent>

</complexType>

XML Grundlagen und Anwendungen

17

ÜberblickSchlüsseldefinitionen am Ende von Elementen:

(Lokal zum Element, in dem die Definition steht)

<key name=„…“><selector xpath =„…“/><field xpath = „…“/>

</key><keyref name=„…“ refer=„Schlüsselname“>

<selector xpath =„…“/><field xpath = „…“/>

</keyref>

XML Grundlagen und Anwendungen

18

Namensräume (Sketch)Im Schema definierte Objekte sind Namensräumen zugeordnet.

Konfliktlösung bei gleichen Elementnamen in verschiedenen SchemataZuordnung durch Attribut targetNamespace von Element schema

targetNamespace="http://xml.netbeans.org/examples/targetNS" Namen von Namensräumen sind URI‘s

<element name=„xxx“…/> definiert "http://xml.netbeans.org/examples/targetNS":xxxAbkürzung von Namensraumnamen durch Prefixvereinbarungen:

xmlns:ns = "http://xml.netbeans.org/examples/targetNS„Danach ns:xxx statt "http://xml.netbeans.org/examples/targetNS":xxx

Unsere Namensräume:Schemaobjekte: xmlns:xsd="http://www.w3.org/2001/XMLSchema„Typunterscheidung: xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance‚StyleSheet-Objekte: xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

XML Grundlagen und Anwendungen

19

ZusammenfassungXML-Schema

ist XML-Dialekt,geht weit über DTD hinaus,vereinheitlicht Werte für Inhalte und Attributekann UML-Klassenmodelle 1:1 abbilden,verfügt über komfortable built-in-Datentypen,unterstützt die Wiederverwendung (Name Spaces),

ist erste Wahl zur Definition vom XML-Protokollen

XML Grundlagen und Anwendungen

20

Übung 6Erweitern Sie das Schema für das Modell unten um:• Zusätzliches Attribut: Länderkennzeichen

• Bankverbindungen für Personen

• Juristische und Natürliche Personen

• Lieferungen von Strasse nach Strasse

Testen Sie Ihre Lösungen durch Erweiterung der Instanz!

Person Adresse

System

Postfach Strasse

** *

XML Grundlagen und Anwendungen

21

Übung 7

Schreiben Sie ein Schema für Schemata!