Los últimos tutoriales de desarrollo web
 

XSD elementos complejos


Un elemento complejo contiene otros elementos y / o atributos.


¿Qué es un elemento complejo?

Un elemento complejo es un elemento XML que contiene otros elementos y / o atributos.

Hay cuatro tipos de elementos complejos:

  • elementos vacíos
  • elementos que contienen otros elementos únicos
  • elementos que sólo contienen texto
  • elementos que contienen tanto texto y otros elementos

Note: Cada uno de estos elementos puede contener atributos, así!


Ejemplos de elementos complejos

Un elemento complejo XML, "product" , que está vacía:

<product pid="1345"/>

Un elemento complejo XML, "employee" , que sólo contiene otros elementos:

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

Un elemento complejo XML, "food" , que contiene sólo texto:

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

Un elemento complejo XML, "description" , que contiene los dos elementos y el texto:

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

Cómo definir un elemento complejo

Mira este elemento XML complejo, "employee" , que sólo contiene otros elementos:

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

Podemos definir un elemento complejo en un esquema XML dos maneras diferentes:

1. El "employee" elemento puede ser declarada directamente al nombrar el elemento, como esto:

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

Si se utiliza el método descrito anteriormente, sólo el "employee" elemento puede utilizar el tipo de complejo especificado. Tenga en cuenta que los elementos secundarios, "firstname" y "lastname" , están rodeados por el <sequence> indicador. Esto significa que los elementos secundarios deben aparecer en el mismo orden en que se declaran. Va a aprender más acerca de los indicadores en el capítulo Indicadores XSD.

2. El "employee" elemento puede tener un atributo de tipo que hace referencia al nombre del tipo de complejos de utilizar:

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

Si se utiliza el método descrito anteriormente, varios elementos se refieren al mismo tipo complejo, como esto:

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

También puede basar un elemento complejo en un elemento complejo existente y añadir algunos elementos, como este:

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