Arbeiten mit ComplexTypes und SimpleTypes

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  XMLSpy Tutorial > XML-Schemas: komplexere Vorgänge >

Arbeiten mit ComplexTypes und SimpleTypes

Nachdem Sie ein Element definiert haben, möchten Sie es möglicherweise auch an einer anderen Stelle im Schema verwenden. Dies erreichen Sie dadurch, dass Sie diese Elementdefinition als globalen ComplexType oder als globales Element erstellen. In diesem Abschnitt werden Sie mit globalen ComplexTypes arbeiten. Wir werden zuerst einen ComplexType auf globaler Ebene erstellen und diesen dann erweitern, um ihn in einem Content Model verwenden zu können. Mehr über globale Elemente erfahren Sie weiter hinten in diesem Tutorial.

 

Erstellen eines globalen complex type

Das Basiselement Address, das wir zuvor definiert haben (und das die Elemente Name, Street und City enthält), kann in verschiedenen Adressformaten wiederverwendet werden. Wir wollen daher diese Elementdefinition als wiederverwendbaren ComplexType erstellen. Gehen Sie dazu folgendermaßen vor:

 

So erstellen Sie einen globales Element vom Typ Complex Type:

 

1.Klicken Sie in der Content Model-Ansicht mit der rechten Maustaste auf das Element Address.
2.Wählen Sie im Kontextmenü nun die Option Als global definieren | Complex Type. Es wird ein globaler ComplexType mit dem Namen AddressType erstellt, und dem Element "Address" im Content Model "Company" wird dieser Typ zugewiesen. Der Inhalt des Elements "Address" ist das Content Model von AddressType, das in einem gelb hinterlegten Kasten angezeigt wird. Beachten Sie, dass der Datentyp des Elements Address nun AddressType ist.

tut_17a

3.Klicken Sie auf das Symbol "Globale Elemente anzeigen" ic_back2global . Damit kehren Sie zur Schema-Übersicht zurück, in der nun alle globalen Komponenten angezeigt werden.
4.Klicken Sie in der Komponenten-Eingabehilfe auf das Erweiterungssymbol für Element- und ComplexType-Einträge, um die jeweiligen Schema-Konstrukte zu sehen.In der Schema-Übersicht werden nun zwei globale Komponenten angezeigt: das Element "Company" und der ComplexType "AddressType". Außerdem wird in der Komponenten-Eingabehilfe der ComplexType "AddressType" angezeigt.

complextypes_schema_ovw

5.        Klicken Sie auf das Symbol "Content Model-Ansicht" ic_component von AddressType, um dessen Content Model anzuzeigen (siehe Abbildung unten). Beachten Sie die Form des ComplexType-Behälters.

tut_18a

6.Klicken Sie auf das Symbol "Globale Elemente anzeigen", um zur Schema-Übersicht zurückzukehren.

 

Erweitern einer "complex type" Definition

Nun werden wir die globale Komponente "AddressType" verwenden, um zwei Arten von länderspezifischen Adressen zu erstellen. Hierzu wird zuerst ein neuer complexType erzeugt, welcher auf der Komponente "AddressType" basiert. Anschließend wird diese Definition erweitert. Gehen Sie dazu folgendermaßen vor:

 

1.Wechseln Sie zur Schema-Übersicht (Wenn Sie sich in der Content Model-Ansicht befinden, klicken Sie auf "Globale Elemente anzeigen").
2. Klicken Sie auf das Symbol Anhängen (oben links im Komponentenfenster). Daraufhin wird das folgende Menü angezeigt:

tut_18b

3. Wählen Sie im Menü ComplexType aus. Eine neue Leerzeile wird in der Komponentenliste angehängt, in der Sie den Namen der Komponente eingeben können.
4.Geben Sie US-Address ein und bestätigen Sie mit der Eingabetaste. (Sollten Sie den Bindestrich "-" beim Eingeben vergessen, und stattdessen ein Leerzeichen verwenden, wird der Name in Rot angezeigt. D.h., ein nicht erlaubtes Schriftzeichen wurde verwendet.)

complextypes_ext_schema_ovw

5.Klicken Sie auf das Symbol "Content Model-Ansicht" ic_component in der Zeile US-Address, um das Content Model des neuen ComplexType zu sehen.  Das Content Model ist leer (siehe Abbildung unten).
6.Klicken Sie in der Details-Eingabehilfe auf das Listenfeld base und wählen Sie AddressType.

complextypes_ext_contmod_view

In der Content Model-Ansicht wird nun das Content Model AddressType als Content Model von US-Address (siehe Abbildung unten) angezeigt.

complextypes_ext_contmod_view_2

7.Wir können nun das Content Model des ComplexType US-Address um ein ZIP Code-Element erweitern. Klicken Sie dazu mit der rechten Maustaste auf das Element US-Address und wählen Sie Child hinzufügen | Sequence. Ein neuer Sequence-Kompositor wird außerhalb des Kastens AddressType (Abbildung unten) angezeigt; d.h., es handelt sich um die Erweiterung zu einem Element.

tut_20a

8.Klicken Sie mit der rechten Maustaste auf den neuen Sequence-Kompositor und wählen Sie Child hinzufügen | Element.
9.Benennen Sie das neu erstellte Element mit Zip und drücken Sie die Tabulatortaste. Daraufhin wird der Cursor in das Wertefeld der Typbeschreibungszeile gesetzt.
10.Wählen Sie in der Auswahlliste xs:positiveInteger aus und bestätigen Sie mit der Eingabetaste.

tut_20b

Sie haben nun einen ComplexType namens US-Address, der auf dem ComplexType AddressType basiert und diesen um einen ZIP Code (Postleitzahl) erweitert.

 

Globale SimpleTypes

Genau wie der ComplexType US-Address auf dem ComplexType AddressType basiert, kann ein Element auch auf einem SimpleType basieren. Der Vorteil ist derselbe wie bei globalen ComplexTypes: Der SimpleType kann wiederverwendet werden. Dazu muss der SimpleType zuerst als globales Element definiert werden. In diesem Tutorial werden wir ein Content Model für US-Bundesstaaten in einem SimpleType definieren. Dieser SimpleType wird als Basis für ein weiteres Element verwendet.

 

Erstellen eines globalen SimpleType

Um einen globalen SimpleType zu erstellen, müssen Sie einen neuen SimpleType an die Liste der globalen Komponenten anhängen, diesen benennen und seinen Datentyp definieren.

 

So erstellen Sie einen globalen SimpleType:

 

1.Wechseln Sie in die Schema-Übersicht (Klicken Sie auf "Globale Elemente anzeigen", wenn Sie sich in der Content Model-Ansicht befinden).
2.Klicken Sie auf das Symbol Anhängen und wählen Sie im Kontextmenü Simple Type.
3.Geben Sie US-State als Elementname ein.
4.Bestätigen Sie mit der Eingabetaste. Der SimpleType US-State wird erstellt und in der Komponenten-Eingabehilfe in die Liste der SimpleTypes aufgenommen (Klicken Sie auf das Erweiterungssymbol des SimpleType-Eintrags, um es zu sehen).

simpletypes_schema_ovw

5.Platzieren Sie in der Details-Eingabehilfe (Abbildung unten) den Cursor in das Wertefeld von restr und geben Sie xs:string ein oder wählen Sie xs:string in der Dropdown-Liste im Wertefeld restr aus.

simpletypes_details_eh

Damit wird ein SimpleType namens US-State vom Datentyp xs:string erstellt. Diese globale Komponente kann nun im Content Model von US-Address verwendet werden.

 

Verwendung eines globalen SimpleType in einem Content Model

Ein globaler SimpleType kann in einem Content Model dazu verwendet werden, den Typ einer Komponente zu definieren. Wir werden US-State verwenden, um im Content Model von US-Address ein Element namens State zu definieren. Gehen Sie dazu folgendermaßen vor:

 

1.Klicken Sie in der Schema-Übersicht auf das Symbol "Content Model-Ansicht" ic_component von US-Address.
2.Klicken Sie mit der rechten Maustaste auf den unteren Sequence-Kompositor und wählen Sie Child hinzufügen | Element.
3.Geben Sie State als Elementnamen ein.
4.Drücken Sie die Tabulatortaste, um den Cursor in das Wertefeld der Typbeschreibungszeile zu setzen.
5.Wählen Sie in der Dropdown-Liste den Eintrag US-State aus.

tut_21b

Das Element State basiert nun auf dem SimpleType US-State.

 

 

 

Erstellen eines zweiten ComplexType auf Basis von AddressType

Wir erstellen nun einen globalen ComplexType für Adressen in Großbritannien. Der ComplexType basiert auf dem Element AddressType und wird erweitert, bis er dem englischen Adressformat entspricht.

 

Gehen Sie folgendermaßen vor:

 

1.Erstellen Sie in der Schema-Übersicht auf Basis von AddressType einen globalen ComplexType mit dem Namen UK-Address. (base=AddressType).
2.Hängen Sie in der Content Model-Ansicht von UK-Address das neue Element Postcode an und weisen Sie ihm den Typ xs:string zu. bDas Content Model von UK-Address sollte nach erfolgreicher Erstellung folgendermaßen aussehen:

complextypes_ext_contmod_view_3

Anmerkung: In diesem Abschnitt haben Sie globale Simple und ComplexTypes erstellt und anschließend in Content Model-Definitionen verwendet. Der Vorteil von globalen Typen liegt darin, dass diese in mehreren Definitionen wiederverwendet werden können.

 


© 2019 Altova GmbH