XSD-komplexe Elemente
- Vorherige Seite XSD-Begrenzungen
- Nächste Seite XSD-leere Elemente
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 andere Elemente enthalten
- Elemente, die nur Text enthalten
- Elemente, die Elemente und Text enthalten
Anmerkung:Diese Elemente können alle Attribute enthalten!
Beispiel für ein komplexes Element
Ein komplexes Element, "product", ist leer:
<product pid="1345"/>
Ein komplexes Element, "employee", enthält nur andere Elemente:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Ein komplexes Element, "food", enthält nur Text:
<food type="dessert">Eiscreme</food>
Ein komplexes Element, "description", enthält Elemente und Text:
<description> Es geschah am <date lang="norwegian">03.03.99</date> .... </description>
Wie definiert man einen komplexen Element?
Betrachten Sie diesen komplexen XML-Element, "employee", der nur andere Elemente enthält:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
In XML Schema gibt es zwei Möglichkeiten, komplexe Elemente zu definieren:
1. Durch Benennen dieses Elements können Sie direkt das "employee"-Element deklarieren, wie folgt:
<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, kann nur "employee" den festgelegten komplexen Typ verwenden. Beachten Sie, dass die untergeordneten Elemente, "firstname" und "lastname", innerhalb des Indikators <sequence> eingeschlossen sind. Dies bedeutet, dass die Unterlemente in der Reihenfolge ihrer Erklärung auftreten müssen. Sie werden in XSD-Indikatoren Dieses Kapitel behandelt mehr über Indikatoren.
2. Der "employee"-Element kann das Attribut "type" verwenden, das den Namen des verwendeten komplexen Typs referenziert:
<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 denselben komplexen Typ verwenden, wie zum Beispiel:
<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 auf bestehende komplexe Elemente aufbauen, indem Sie auf eine komplexe Struktur als Basis zurückgreifen und einige Elemente hinzufügen, wie folgt:
<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>
- Vorherige Seite XSD-Begrenzungen
- Nächste Seite XSD-leere Elemente