Neueste Web-Entwicklung Tutorials
 

XSD komplexe 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 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>