Altova XMLSpy 2024 Enterprise Edition

Sie haben in der Schema-Übersicht bereits ein globales Element mit dem Namen Company erstellt. Dieses Element soll ein einziges Address-Element und eine unbegrenzte Anzahl an Person-Elementen enthalten. Dies ist dann das Content Model von Company. Globale Elemente, die Content Models haben können, sind Elemente, complexTypes und Elementgruppen. In XMLSpy wird das Content Model einer globalen Komponente in der Content Model-Ansicht der Schema-Ansicht angezeigt. Um das Content Model einer globalen Komponente anzeigen und editieren zu können, klicken Sie auf das Symbol "Diagramm anzeigen" ic_component links neben der globalen Komponente.

schema_overview

In diesem Abschnitt werden Sie das Content Model des Elements Company erstellen.

 

Erstellen eines einfachen Content Model

So erstellen Sie das Content Model des Elements Company:

 

1.Klicken Sie in der Schema-Übersicht auf das Symbol "Diagramm anzeigen" ic_component links neben dem Element Company. Hierdurch wird das Content Model des Elements Company angezeigt (Abbildung unten), das derzeit noch leer ist. (Alternativ dazu können Sie auch auf den Eintrag Company im Komponentenfenster doppelklicken, um das Content Model anzuzeigen.)

content_model_empty

2.Ein Content Model besteht aus Kompositoren und Komponenten. Die Kompositoren definieren die Beziehung zwischen zwei Komponenten. Sie müssen nun im Company Content Model einen Child-Kompositor zum Element Company hinzufügen, um ein Child-Element hinzufügen zu können. Rechtsklicken Sie dazu auf das Element "Company" und wählen Sie im Kontextmenü die Option Child hinzufügen | Sequence. (Sequence, Choice und All sind die drei Kompositoren, die in einem Content Model verwendet werden können.)
tut_7a

Daraufhin wird der Sequence-Kompositor eingefügt, der definiert, dass die Komponenten, die darauf folgen in der angegebenen Reihenfolge erscheinen müssen.

tut_7b
3.Rechtsklicken Sie auf den Sequence-Kompositor und wählen Sie Child hinzufügen | Element. Daraufhin wird ein unbenanntes Element hinzugefügt.
4.Benennen Sie das Feld Address und bestätigen Sie mit der Eingabetaste.
tut_8a
5.Rechtsklicken Sie erneut auf den Sequence-Kompositor und wählen Sie Child hinzufügen | Element, benennen Sie die neue Elementkomponente Person.
tut_8b

Sie haben nun ein Schema mit einem Eintrag für die Firmenadresse und einem Eintrag für einen Angestellten (Person) definiert. Wir müssen nun die Anzahl der Person-Elemente erhöhen.

 

6.Klicken Sie mit der rechten Maustaste auf das Element Person und wählen Sie Unbounded aus dem Kontextmenü. Unter dem Element Person wird nun die Anzahl der zulässigen Instanzen angezeigt: 1 bis unendlich.
tut_8c

Sie können alternativ dazu in der Details-Eingabehilfe die Felder minOcc und maxOcc direkt editieren und die Anzahl der zulässigen Instanzen angeben, in diesem Fall 1 bzw. unbounded.

 

Hinzufügen von zusätzlichen Ebenen zur Struktur des Content Model

Bisher enthält das Content Model, das Sie erstellt haben, eine Ebene: eine Child-Ebene für das Element company, das die Elemente Address und Person enthält. Nun wollen wir den Inhalt des Elements Address definieren, und zwar die Subelemente Name, Street und City. Dies ist eine zweite Ebene. Wir müssen also zum Element Address einen Child-Kompositor hinzufügen und anschließend die Elementkomponenten selbst. Gehen Sie dabei folgendermaßen vor:

 

 

1.Klicken Sie mit der rechten Maustaste auf das Element Address, um das Kontextmenü zu öffnen, und wählen Sie Child hinzufügen | Sequence.
2.Klicken Sie mit der rechten Maustaste auf den Sequence-Kompositor und wählen Sie Child hinzufügen | Element. Benennen Sie die neu erstellte Elementkomponente mit "Name".
tut_9a

 

ComplexTypes, simpleTypes und XML Schema-Datentypen

Bisher haben wir noch keinen Elementtyp explizit definiert. Klicken Sie auf das Register Text um die Textansicht für Ihr Schema anzuzeigen (siehe Liste unten). Sie werden feststellen, dass jedes Mal, wenn ein Sequence-Kompositor eingefügt wurde, das Element xs:sequence im Element xs:complexType eingefügt wurde. Kurz gesagt, die Elemente Company und Address sind ComplexTypes, da sie Child-Elemente enthalten. Ein ComplexType ist ein Element, das Attribute oder Elemente enthält.

 

<xs:element name="Company">

  <xs:annotation>

    <xs:documentation>Root element</xs:documentation>

  </xs:annotation>

  <xs:complexType>

    <xs:sequence>

      <xs:element name="Address">

        <xs:complexType>

          <xs:sequence>

            <xs:element name="Name"/>

          </xs:sequence>

        </xs:complexType>

      </xs:element>

      <xs:element name="Person"/>

    </xs:sequence>

  </xs:complexType>

</xs:element>

 

 

SimpleType-Elemente dagegen enthalten nur Text und haben keine Attribute. Beim Text kann es sich um Strings, Daten, Zahlen usw. handeln. Wir möchten, dass das Child-Element Name von Address nur Text enthält. Es ist ein SimpleType, dessen Textinhalt wir durch Restriktion auf einen String einschränken möchten. Dies lässt sich durch Verwendung des XML-Schema-Datentyps xs:string bewerkstelligen. Um das Element Name als diesen Datentyp zu definieren, gehen Sie folgendermaßen vor.

 

 

1.Klicken Sie auf das Register Schema um zur Schema/WSLD-Ansicht zurückzukehren.
2.Klicken Sie auf Name, um das Element auszuwählen.
3.Klicken Sie in der Details-Eingabehilfe auf das Listenfeld type in der mittleren Eingabehilfe und wählen Sie xs:string aus der Auswahlliste.
tut_9b

Beachten Sie, dass sowohl minOcc als auch maxOcc den Wert 1 hat, d.h. dieses Element hat nur eine Instanz.

 

In der Textdarstellung sieht das Element Name folgendermaßen aus:

 

<xs:element name="Name" type="xs:string"/>

 

Anmerkung: Ein einfaches Type-Element kann jedem beliebigen von mehreren XML-Schema-Datentypen angehören. In all diesen Fällen erscheint das Symbol für Textinhalt nur im Elementfeld.

 

© 2017-2023 Altova GmbH