Präsentation herunterladen
1
Ableitung UML XML Schema
Geoinformation III Vorlesung 14 Ableitung UML XML Schema
2
12 UML XML U M L A 1x
3
12 UML XML U M L A 1x
4
12 UML XML M L A 1x
5
12 UML XML X M L A 1x
6
13 Von UML zu XML (I) Objektorientierte Modellierung von Systemen und Datenstrukturen erfolgt heutzutage zumeist mittels UML-Diagrammen (graphisch) Für den Datenaustausch oder die Speicherung der Anwendungsdateien ist die Verwendung von XML sinnvoll zugrundeliegendes Konzept: Model-driven architecture: Modellierung in UML automatische Ableitung von implementierungsspezifischen Formalismen (Java, Tabellen einer relationalen Datenbank, XML, ...) aus UML Probleme: Keine 1:1-Abbildung von UML auf XML-Schema-Strukturen Abbildung von UML nach XML nicht eindeutig (mehrere Möglichkeiten) Festlegung auf Abbildungsvarianten sind sog. Entwurfsentscheidungen
7
Von UML zu XML (II) Gegeben: UML-Klassendiagramm
13 Von UML zu XML (II) Gegeben: UML-Klassendiagramm Gesucht: XML-Schema zu dem UML-Klassendiagramm Konvertierung durch Regeln für: Klassen mit Stereotyp Enumeration oder CodeList Klassen Klassen mit Oberklasse (Vererbung) Attribute von Klassen Kompositionen Assoziationen/Aggregationen Methoden werden in XML ignoriert
8
Von UML zu XML (III): Vereinfachungen
13 Von UML zu XML (III): Vereinfachungen im folgenden werden werden aus Gründen der Übersichtlichkeit folgende Konzepte von XML-Schema nicht berücksichtigt: Namespaces. Der Namespace für Schema-Elemente ist z.B. xs.
9
Konvertierung von Klassen mit Stereotyp Enumeration oder CodeList
UMLKLASSENNAME + wert_1 + wert_2 ... + wert_n <simpleType name="UMLKLASSENNAMEType> <restriction base="string"> <enumeration value="wert_1" /> <enumeration value="wert_2" /> .... <enumeration value="wert_n" /> </restriction> </simpleType> Beispiel: <CodeList> Dachform + Satteldach + Walmdach + Flachdach +Krüppelwalmdach
10
Konvertierung von Klassen
7 Konvertierung von Klassen <complexType name="KlassennameTyp"> <sequence> <element name="Attribut1" type="string"/> <element name="Attribut2" type="string"/> </sequence> </complexType> <element name="Klassename" type="KlassennameTyp"/> Klassenname + Attribut1:String + Attribut2:String jede Klasse wird zu komplexem Typen (complexType) Attribute der Klasse werden zu Kindelementen dieses komplexen Typs, geklammert durch <sequence> Zu jedem komplexen Typ (Klasse) muss Element erzeugt werden
11
Konvertierung von Klassen mit Oberklasse
7 Konvertierung von Klassen mit Oberklasse <complexType name="OberklasseTyp"> <sequence> <element name="Attribut_Ober" type="string"/> </sequence> </complexType> <complexType name="UnterklasseTyp"> <complexContent> <extension base="OberklasseTyp" <element name="Attribut_Unter" type="String"/> </extension> </complexContent> <element name="Oberklasse" type="OberklasseTyp"/> <element name="Unterklasse" type="UnterklasseTyp" substitutionGroup="Oberklasse"/> Oberklasse Attribut_Ober:String Unterklasse Attribut_Unter:String
12
Konvertierung von Klassen mit Oberklasse
jede Klasse wird zu komplexem Typen (complexType) Attribute der Klasse werden zu Kindelementen dieses komplexen Typs der komplexe Typ einer Unterklasse erhält einen complex content und darin als extension base den Typ der Oberklasse. Zu jedem komplexen Typ (Klasse) muss Element erzeugt werden Element der Unterklasse erhält eine substitution group mit Element der Oberklasse wegen Ersetzbarkeit von Elementen der Oberklasse durch Elemente der Unterklasse
13
Vererbung: Beispiel-XML-Datei
Person name:String <Person> <name>Schmitz</name> </Person> <Student> <matrikelnr> </matrikelnr> </Student> Student matrikelnr:String
14
Mehrfachvererbung UML erlaubt Mehrfachvererbung (eine Klasse hat mehr als eine Oberklasse) XML Schema erlaubt Mehrfachvererbung nicht Wenn Mehrfachvererbung in UML vorliegt: eine Vererbung auswählen und in XML Schema umsetzen die andere(n) Vererbungsbeziehungen durch Kopieren von Attributen/Elementen von Ober- zu Unterklasse realisieren Ein Element kann mehrere substitution groups haben
15
Konvertierung von Attributen
Beispiel: <complexType name="PersonTyp"> <sequence> <element name="name" type="string"/> <element name="alter" type="integer"/> <element name="maennlich" type="boolean"/> <element name="groesse" type="decimal"/> <element name="adresse" type="AdressTyp"/> </sequence> </complexType> <complexType name="AdressTyp"> <element name="Strasse" type="string"/> <element name="hausnummer" type="string"/> Person + name:CharacterString + alter:integer + maennlich:boolean + groesse: real + adresse:AdressTyp
16
Konvertierung von Attributen
Attribute einer werden zu Kindelementen des Typs der Klasse geklammert durch <sequence> Ist Typ des Attributs ein einfacher Datentyp, so wird dieser ersetzt und zum Typ des Kindelements: CharacterString -> string Integer -> integer Boolean -> boolean Real -> decimal Ist Typ des Attributs eine Klasse, so wird ein neuer Typ für diese Klasse erzeugt und zum Typen des Kindelements Alternative: anonymer Datentyp für Attribut...
17
Konvertierung von Attributen: Anonyme Typen
<complexType name="PersonTyp"> <sequence> <element name="name" type="string"/> <element name="alter" type="integer"/> <element name="maennlich" type="boolean"/> <element name="groesse" type="decimal"/> <element name="adresse"> <complexType> <element name="Strasse" type="string"/> <element name="hausnummer" type="string"/> </sequence> </complexType> </element> Person + name:CharacterString + alter:integer + maennlich:boolean + groesse: real + adresse:AdressTyp
18
Konvertierung von Assoziationen (Aggregationen, Kompositionen)
Assoziationen in UML können ungerichtet (beidseitig) sein Assoziationen in XML-Schema sind gerichtet Ersetzen der ungerichteten durch zwei gerichtete Assoziationen (falls beide notwendig, i. d. R. nur eine Richtung erforderlich)
19
Konvertierung von Kompositionen
Komposition (vgl. GIS I): Existenz des Teils hängt vom Ganzen ab jedes Teil gehört zu genau einem Ganzen Beispiel: Existenz der Linie hängt vom Polygon ab jede Linie gehört zu genau einem Polygon eine Linie kann nicht von zwei Polygonen benutzt werden (keine Topologie) zu einem Polygon können alle Linien aufgezählt werden (keine Verweise nötig) Beispiel: Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil
20
Konvertierung von Kompositionen
Beispiel: <complexType name="LinieTyp"> </complexType> <element name="Linie" type="LinieTyp"/> <complexType name="PolygonTyp"> <sequence> <element name="bestehtAusLinie" type="LinienPropertyType" minOccurs="3" maxOccurs="unbounded"/> </sequence> <complexType name="LinienPropertyType"> <element ref="Linie"/> Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil
21
Konvertierung von Kompositionen
jede Klasse wird zu komplexem Typ (wie bisher) Komposition wird zu komplexem Typ mit Bestandteil (z.B. Linie) mit als Kindelement Ganzes-Klasse erhält Kindelement vom Typ des Kompositions-Typen Multiplizitäten beachten (minOccurs/maxOccurs) Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil
22
Kompositionen: Beispiel XML-Datei
<Polygon> <bestehtAusLinie> <Linie>...</Linie> </bestehtAusLinie> </Polygon> Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil
23
Konvertierung von Aggregationen/Assoziationen
Beispiel: Ein Teil/ein Assoziationspartner kann zu mehreren Ganzen/Partner gehören Beispiel: eine Linie kann zu mehreren Polygonen gehören (Topologie) nicht möglich, zu einem Polygon alle Linien explizit aufzuzählen Verweise (Links) nötig Linien brauchen z.B. eine ID (um darauf zu verweisen) Assoziation bestehtAusLinien muss Verweise auf eine Linie (auf deren ID) verwalten können Konzept: XLink Polygon Ganzes 0..* besteht AusLinie 3..* Linie Teil
24
Verwenden des XLink-Schemas für Verweise
XLink/XPointer: Ergänzung zu XML Schema Zweck: Verweise zwischen Elementen Verwendet XML-Attribute für Identifier für Verweise auf Elemente (Identifier), z.B. xlink:href="#Lin22" Verweise innerhalb einer Datei (xlink:href beginnt mit #) auch Verweise auf Elemente in anderen Dateien möglich (wird hier nicht behandelt)
25
Konvertierung von Aggregationen/Assoziationen
Beispiel: <complexType name="LinieTyp"> <attribute name="id" type="ID"/> </complexType> <element name="Linie" type="LinieTyp"/> <complexType name="PolygonTyp"> <sequence> <element name="bestehtAusLinie" type="LinienPropertyType" minOccurs="3" maxOccurs="unbounded"/> </sequence> <complexType name="LinienPropertyType"> <element ref="Linie"/> <xs:attributeGroup ref="xlink:simpleLink"/> Polygon Ganzes 0..* besteht AusLinien 3..* Linie Teil
26
Aggregation: Beispiel-XML-Datei
<Polygon> <bestehtAusLinie> <Linie id="Lin21">...</Linie> </bestehtAusLinie> <Linie id="Lin22">...</Linie> <Linie id="Lin26">...</Linie> <Linie id="Lin28">...</Linie> </Polygon> <bestehtAusLinie xlink:href="#Lin22"/> <bestehtAusLinie xlink:href="#Lin26"/> <Linie id="Lin30">...</Linie> <Linie id="Lin34">...</Linie> Lin28 Lin21 Lin26 Lin22 Lin34 Lin32 Lin30 Lin33
27
Multiplizitäten von Assoziationen
Multiplizitäten können mit minOccurs oder maxOccurs angegeben werden Elemente ohne minOccurs und maxOccurs dürfen genau einmal vorkommen Beispiel: <complexType name="PolygonTyp"> <sequence> <element name="bestehtAusLinie" type="LinienPropertyType" minOccurs="3" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="LinienPropertyType"> <element ref="Linie"/> Ganzes Polygon besteht AusLinien 3..* Linie Teil
28
Übungsaufgabe: XML-Schema für UML-Diagramm
Bauliche Anlage <Codelist> Gebäudefunktion +Wohnen + Gewerbe +Mischgebiet +Verwaltung 0..* Gebäude + eigentümer: Eigentümer[1..*] 1 0..* benachbart 1..* Gebäudeteil + funktion: Gebäudefunktion[1..*] + baujahr:integer + höhe: real Eigentümer + Name: CharacterString + Vorname:CharacterString +Alter:integer 1 1..* Polygon
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.