XML – Grundlagen und Anwendungen
description
Transcript of XML – Grundlagen und Anwendungen
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 Betrachter
zur 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 und
mehr 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 Typen
Zu wenig Basistypen (kein string, integer etc.)
Nur Komposition keine Spezialisierung
Nur globale Referenzen (ID, IDREF)
Kein Konzept für Namensräume
Selbst nicht XML.
XML Grundlagen und Anwendungen
4
InhaltXML-Schema verbessert DTDs durch:
Reichhaltige Basistypen Built-in‘s
Trennung von Element und Typ Klassen
Differenzierte Schlüssel Assoziationen
Typerweiterung Spezialisierung
Ersetzungsgruppen „Polymorphie“
XML Grundlagen und Anwendungen
5
BasisdatentypendateTime
boolean
float
string
integer
byte
NMTOKENS
XML Grundlagen und Anwendungen
6
Definition von BasistypenAufzählung
Längenbeschränkungen
Wertbegrenzungen (untere / obere Schranken)
White-Space-Eliminierung
Reguläre Ausdrücke
Vereinigung
Listen
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 Schemata
Zuordnung durch Attribut targetNamespace von Element schematargetNamespace="http://xml.netbeans.org/examples/targetNS"
Namen von Namensräumen sind URI‘s<element name=„xxx“…/> definiert "http://xml.netbeans.org/examples/targetNS":xxx
Abkü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 Attribute
kann 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!