Altova UModel 2024 Professional Edition

Beispiel: Erstellen und Generieren eines XML-Schemas

Zur Startseite Zurück Nach oben Weiter

In diesem Beispiel wird beschrieben, wie Sie mit UModel Schritt für Schritt ein neues XML-Schema modellieren. Nachdem Sie das Schema grafisch mittels UML modelliert haben, werden Sie die Schema-Datei generieren. Dabei lernen Sie, wie Sie das im Codefragment unten gezeigte Schema product.xsd erstellen und generieren.

 

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="https://www.altova.com/umodel" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:prod="https://www.altova.com/umodel">
  <xs:simpleType name="SizeType">
    <xs:restriction base="xs:integer">
        <xs:maxInclusive value="10"/>
        <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ProductType">
    <xs:sequence>
        <xs:element name="number" type="xs:integer">
        </xs:element>
        <xs:element name="size" type="prod:SizeType">
        </xs:element>
    </xs:sequence>
    <xs:attribute name="createdAt" type="xs:date">
    </xs:attribute>
  </xs:complexType>
  <xs:element name="product" type="prod:ProductType">
  </xs:element>
</xs:schema>

product.xsd

Wie oben gezeigt, hat das Schema product.xsd zwei Namespace-Deklarationen:

 

1.den XML-Schema-Standard-Namespace http://www.w3.org/2001/XMLSchema, der auf das Präfix "xs" gemappt ist.

2.den sekundären Namespace https://www.altova.com/umodel, der auf das Präfix "prod" gemappt ist, welcher auch der Target Namespace ist.

 

Des Weiteren hat das XML-Schema ein globales product-Element, einen complexType ProductType und einen simpleType SizeType.

 

Deklarieren von Namespaces und Dateikodierung

Um fortzufahren, erstellen Sie ein neues UModel-Projekt. Klicken Sie mit der rechten Maustaste auf das Root-Paket und wählen Sie im Kontextmenü den Befehl Neues Diagramm | XML-Schema-Diagramm. Wenn Sie aufgefordert werden, das UModel XSD-Profil zu inkludieren, klicken Sie auf OK.

um-xsd-project-structure

Benennen Sie "XMLSchemaDiagram1" im Fenster Modell-Struktur in "MainDiagram" um. Dies ist das Diagramm, in dem mit Ausnahme der Namespace-Deklarationen die meisten Schema-Komponenten erstellt werden.

 

Benennen Sie als nächstes "XSDTargetNamespace" in "https://www.altova.com/umodel" um (da dies der erforderliche Target Namespace ist). Damit wird der Target Namespace des neuen Schemas deklariert.

um-xsd-example-00

Die beiden "xmlns" Namespaces und die UTF-8-Kodierung können folgendermaßen definiert werden:

 

1.Wählen Sie in der Modell-Struktur das XSDSchema aus.

2.Klicken Sie im Fenster "Eigenschaften" mit der rechten Maustaste auf die Eigenschaft xmlns und wählen Sie den Befehl Eigenschaftswert hinzufügen | xlmns.

3.Bearbeiten Sie die Eigenschaften xmlns und Kodierung wie unten gezeigt.

um-xsd-example-01

Optional können Sie schnell auf Namespace-Ebene ein neues XML-Schema-Diagramm erstellen, das dieselben Informationen folgendermaßen visuell darstellt:

 

1.Klicken Sie in der Modell-Struktur mit der rechten Maustaste auf den Namespace "https://www.altova.com/umodel" und wählen Sie im Kontextmenü den Befehl Neues Diagramm | XML-Schema-Diagramm.

2.Wenn ein Meldungsfeld mit dem folgenden Text erscheint: "Möchten Sie das 'XML-Schema-Diagramm' zu einem neuen 'XSD-Schema' hinzufügen?", klicken Sie auf Nein.

3.Ziehen Sie das XML-Schema aus der Modell-Struktur in das Diagramm.

um-xsd-example-02

Der Namespace und die Kodierung werden, wie oben gezeigt, als Eigenschaftswerte gespeichert und können auch über das Diagrammfenster bearbeitet werden.

 

Hinzufügen eines simpleType

In den folgenden Schritten wird der simpleType SizeType zum XML-Schema hinzugefügt. Dies ist ein Typ, der den Basistyp xs:integer einschränkt, daher fügen wir auch den Basistyp zum Diagramm hinzu und erstellen eine Restriction-Beziehung.

 

1.Doppelklicken Sie in der Modell-Struktur auf MainDiagram, um es zu öffnen.

2.Klicken Sie auf die Symbolleisten-Schaltfläche XSD Simple Type um-ic-xsd-simple-type und anschließend in das Diagramm.

3.Benennen Sie den neu hinzugefügten SimpleType in SizeType um.

um-xsd-example-04

4.Klicken Sie in die Modell-Struktur und drücken Sie Strg + F.. Daraufhin wird das Dialogfeld "Suchen" aufgerufen. Geben Sie die ersten Buchstaben von "integer" ein und wählen Sie den Typ integer aus dem "XSDDataTypes"-Paket des XSD-Profils aus.

5.Ziehen Sie den Typ integer in das Diagramm.

um-xsd-example-05

6.Klicken Sie auf die Symbolleisten-Schaltfläche Restriction um-ic-xsd-restriction und ziehen Sie den Cursor von SizeType auf integer. Dadurch wird die Restriction-Beziehung erstellt, siehe auch Erstellen von Beziehungen.

um-xsd-example-06

7.Um die Werte minInclusive und maxInclusive zu definieren, wählen Sie den SimpleType aus und bearbeiten Sie die Eigenschaften desselben Namens im Fenster "Eigenschaften".

um-xsd-example-07

 

Hinzufügen eines complexType

In den folgenden Schritten wird der complexType ProductType zum XML-Schema hinzugefügt. Alle diese Schritte werden ebenfalls im MainDiagram durchgeführt.

 

1.Klicken Sie auf die Symbolleisten-Schaltfläche XSD Complex Type um-ic-xsd-complex-type und anschließend in das Diagramm.

2.Benennen Sie den ComplexType in ProductType um.

3.Klicken Sie mit der rechten Maustaste auf den ComplexType und wählen Sie im Kontextmenü den Befehl Neu | XSD Sequence.

um-xsd-example-08

4.Ziehen Sie die Klasse «sequence» aus dem ComplexType in das Diagramm.

um-xsd-example-09

5.Rechtsklicken Sie auf die Sequenz und wählen Sie Neu | XSD Element (local).

6.Ändern Sie den Elementnamen in number und definieren Sie als Typ integer. Der Typ integer ist ein XML-Schema-Basistyp aus dem XSD-Profil. Eine Anleitung zum Definieren des Typs eines Elements finden Sie unter Typ-Autokomplettierung in Klassen.

um-xsd-example-10

7.Erstellen Sie auf dieselbe Art, wie oben beschrieben, das Element size vom Typ SizeType. Beachten Sie, dass SizeType der zuvor erstellte SimpleType ist.

um-xsd-example-11

8.Klicken Sie mit der rechten Maustaste im Diagramm auf den ComplexType und wählen Sie im Kontextmenü den Befehl Neu | XSD Attribute (local).

9.Ändern Sie den Attributnamen in createdAt und definieren Sie als Typ date.

um-xsd-example-12

 

Hinzufügen eines Elements

Nachdem wir nun alle erforderlichen Typen des Schemas definiert haben, können Sie folgendermaßen ein Produktelement vom Typ ProductType hinzufügen:

 

1.Klicken Sie auf die Symbolleisten-Schaltfläche XSD Element (global) um-ic-xsd-global-element und anschließend in das Diagramm. Beachten Sie, dass eine Klasse mit dem Stereotyp «element» und einer einzigen Eigenschaft hinzugefügt wird.

um-xsd-example-13

2.Benennen Sie die Eigenschaft in product um und ändern Sie ihren Typ in ProductType.

um-xsd-example-14

 

Fertiges Design

Mit den obigen Schritten haben wir den Design-Teil des Schemas abgeschlossen. Ihr komplettes Schema-Design sollte nun folgendermaßen aussehen:

um-xsd-example-15

 

Vorbereitung für das Code Engineering

Damit anhand des Modells eine Schema-Datei generiert werden kann, wollen wir nun eine Code Engineering-Komponente hinzufügen, die die Informationen für die Schemagenerierung liefert. Die Code Engineering-Komponente ähnelt anderen UModel-Projektarten, siehe auch Hinzufügen einer Code Engineering-Komponente.

 

Klicken Sie in der Modell-Struktur mit der rechten Maustaste auf das Paket "Component View" und fügen Sie ein neues Element vom Typ Komponente hinzu. Die Eigenschaften der Komponente müssen nun wie unten gezeigt geändert werden:

 

1.Die Eigenschaft für Code Engineering verwenden muss aktiviert werden.

2.Die Eigenschaft Codesprache der Code Engineering-Komponente muss auf "XSD 1.0" gesetzt werden.

3.Die Eigenschaft Projektdatei der Code Engineering-Komponente muss auf die zu generierende Schema-Datei (in diesem Beispiel product.xsd) verweisen.

um-xsd-example-03
Anmerkung:Wenn die Eigenschaft Projektdatei fehlt, geben Sie in die Eigenschaft Verzeichnis product.xsdein und drücken Sie die Eingabetaste. Daraufhin wird ein Meldungsfeld angezeigt, in dem Sie aufgefordert werden, statt dessen eine Projektdatei zu referenzieren. Klicken Sie zur Bestätigung auf Ja.

 

Schließlich muss das XML-Schema von der Code Engineering-Komponente wie unter Hinzufügen einer Code Engineering-Komponente beschrieben, realisiert werden. Die schnellste Art, um die Komponentenrealisierungsbeziehung in diesem Beispiel zu erstellen, ist die folgende:

 

Ziehen Sie das XSDSchema-Schema in der Modell-Struktur über die Code Engineering-Komponente (Component1) und lassen Sie die Maustaste los, wenn ein Tooltipp wie der folgende angezeigt wird:

um-xsd-example-16

Sie können nun die Schema-Datei generieren. Drücken Sie dazu entweder F12 oder wählen Sie den Menübefehl Projekt | Überschreibe Programmcode von UModel Projekt. Beachten Sie, dass eine Zusammenführung im Fall von XML-Schemas nicht unterstützt wird, daher wird im Dialogfeld eine Meldung in Rot mit diesem Inhalt angezeigt.

um-xsd-example-17

Das neue XML-Schema wird im selben Ordner wie Ihr UModel-Projekt generiert.

 

© 2018-2024 Altova GmbH