Ein komplexes Element enthält andere Elemente und / oder Attribute.
Was ist ein komplexes Element?
Ein komplexes Element ist ein XML-Element, das andere Elemente und / oder Attribute enthält.
Es gibt vier Arten von komplexen Elementen:
- leere Elemente
- Elemente, die nur andere Elemente enthalten
- Elemente, die nur Text enthalten
- Elemente, die sowohl andere Elemente und Text enthalten
Note: Jedes dieser Elemente Attribute auch enthalten können!
Beispiele für komplexe Elemente
Eine komplexe XML - Element, "product" , die leer ist:
<product pid="1345"/>
Eine komplexe XML - Element, "employee" , die nur andere Elemente enthält:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
Eine komplexe XML - Element, "food" , die nur Text enthält:
<food type="dessert">Ice cream</food>
Eine komplexe XML - Element, "description" , die beide Elemente und Text enthält:
<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>
Wie ein komplexes Element zu definieren
Schauen Sie sich dieses komplexe XML - Element, "employee" , die nur andere Elemente enthält:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
Wir können ein komplexes Element in einem XML-Schema zwei verschiedene Arten definieren:
1. Die "employee" Element kann durch die Benennung des Elements direkt deklariert werden, 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 beschriebenen Verfahren verwenden, werden nur die "employee" Element kann den angegebenen komplexen Typ verwenden. Beachten Sie, dass die untergeordneten Elemente, "firstname" und "lastname" , umgeben von der <sequence> Anzeige. Dies bedeutet, dass die untergeordneten Elemente in der gleichen Reihenfolge erscheinen müssen, wie sie deklariert sind. Sie werden mehr über Indikatoren im XSD-Indikatoren Kapitel erfahren.
2. Die "employee" Element kann ein type - Attribut haben , das auf den Namen des komplexen Typs bezieht sich verwenden:
<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 beschriebene Methode verwenden, können mehrere Elemente auf den gleichen komplexen Art beziehen, 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 ein komplexes Element auf ein bestehendes komplexes Element stützen und 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>