Ultimele tutoriale de dezvoltare web
 

XSD Elemente complexe


Un element complex conține alte elemente și / sau atribute.


Ce este un element complex?

Un element complex este un element XML care conține alte elemente și / sau atribute.

Există patru tipuri de elemente complexe:

  • elemente goale
  • elemente care conțin numai alte elemente
  • elemente care conțin numai text
  • elemente care conțin atât alte elemente și text

Note: Fiecare dintre aceste elemente pot conține atribute, de asemenea!


Exemple de elemente complexe

Un element complex XML, "product" , care este gol:

<product pid="1345"/>

Un element XML complex, "employee" , care conține numai alte elemente:

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

Un element complex XML, "food" , care conține numai text:

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

Un element XML complex, "description" , care conține atât elemente și text:

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

Cum de a defini un element de complex

Uită - te la acest element XML complex, "employee" , care conține numai alte elemente:

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

Putem defini un element complex, într-un XML Schema două moduri diferite:

1. "employee" element poate fi declarat în mod direct prin numirea elementului, ca aceasta:

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

Dacă utilizați metoda descrisă mai sus, numai "employee" element poate utiliza tipul de complex specificat. Rețineți că elementele de copil, "firstname" și "lastname" , sunt înconjurate de <sequence> indicator. Acest lucru înseamnă că elementele de copil trebuie să apară în aceeași ordine în care sunt declarate. Vei afla mai multe despre indicatorii din capitolul XSD indicatori.

2. "employee" element poate avea un atribut de tip care se referă la numele de tip complex de utilizat:

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

Dacă utilizați metoda descrisă mai sus, mai multe elemente se pot referi la același tip complex, ca aceasta:

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

De asemenea, puteți stabili un element complex, pe un element complex existent și se adaugă unele elemente, cum ar fi acest lucru:

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