Latest web development tutorials

XML-Schema komplexe Elemente

Komplexe Element enthält andere Elemente und / oder Attribute.


h2> Was ist ein Verbundelement?

Verbundelement bezieht sich auf das XML-Element, das andere Elemente und / oder Attribute enthält.

Es gibt vier Arten von Verbundelementen:

  • Leere Elemente
  • Es enthält andere Elemente
  • Element enthält nur Text
  • Element enthält Elemente und Text

Anmerkung: Die obigen Elemente können enthalten Attribute!


Beispiele für Verbundelemente

Verbundelement, "Produkt", ist leer:

<product pid="1345"/>

Verbundelement, "Mitarbeiter", enthält nur andere Elemente:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

Komplexe XML-Element, "Lebensmittel", die nur Text enthalten:

<food type="dessert">Ice cream</food>

Komplexe XML-Element, "Beschreibung" enthält Elemente und Text:

<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>


Wie komplex Element zu definieren?

Schauen Sie sich dieses komplexe XML-Element, "Mitarbeiter", enthält nur andere Elemente:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

In XML-Schema haben wir zwei Möglichkeiten, um komplexe Elemente zu definieren:

1. Nennen Sie das Element direkt an die "Mitarbeiter" Elementdeklaration, wie folgt aus:

<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

Wenn Sie die oben beschriebene Methode verwenden, die nur "Mitarbeiter" können die komplexen Typ angegeben verwenden. Bitte beachten Sie, dass die untergeordneten Elemente, "Vorname" und "Nachname", durch den Indikator <sequence> umgeben sind. Dies bedeutet, dass die untergeordneten Elemente in der Reihenfolge erscheinen, müssen sie deklariert sind. Sie werden XSD Indikatoren erfahren Sie mehr über die Indikatoren in diesem Abschnitt.

2. "Mitarbeiter" Element kann das type-Attribut zu verwenden, die Rolle dieses Attributs ist ein Verweis auf den Namen des komplexen Typs verwendet werden:

<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>

Wenn Sie die oben beschriebenen Verfahren verwenden, kann es durch eine Reihe von Elementen des gleichen komplexen Typs verwendet werden, wie folgt aus:

<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>

Sie können auch über eine bestehende Verbundelement zu einem Verbundelement Basis, und dann einige Elemente hinzufügen, wie folgt aus:

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
<xs:complexContent>
<xs:extension base="personinfo">
<xs:sequence>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>