Elemento complexType del XML Schema

Definición y uso

El elemento complexType define un tipo complejo. Los elementos de tipo complejo son elementos XML que contienen otros elementos y/u atributos.

Información del elemento

Número de apariciones Sin restricciones dentro del esquema; una vez dentro del elemento.
Elemento padre element, redefine, schema
Contenido annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute

Gramática

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|lista de (extensión|restricción))
final=(#all|lista de (extensión|restricción))
cualquier atributos
>
(anotación?,(simpleContent|complexContent|((grupo|todo| 
choice|sequence)?,((atributo|grupo de atributo)*,atributo cualquiera?))))
</complexType>

(? El símbolo de declaración se encuentra en el elemento complexType, el elemento puede aparecer cero o una vez, * El símbolo de declaración indica que el elemento puede aparecer cero o múltiples veces。)

Atributo

id

Opcional. Define el ID único de este elemento.

name

Opcional. Define el nombre del elemento.

abstract

Opcional. Define si se puede utilizar el tipo complejo en el documento de instancia. Si este valor es true, el elemento no puede usar directamente este tipo complejo, sino que debe usar un tipo complejo derivado de este tipo complejo. El valor predeterminado es false.

mixed

Opcional. Define si se permite que los datos de caracteres aparezcan entre los subelementos de este tipo complejo. El valor predeterminado es false.

  • Si el elemento simpleContent es un subelemento, no se permite la propiedad mixed.
  • Si el elemento complexContent es un subelemento, la propiedad mixed puede ser sobrescrita por la propiedad mixed del elemento complexContent.

block

Opcional. Evita que los tipos complejos con el tipo de derivación especificado se utilicen para reemplazar este tipo complejo. Este valor puede contener #all o una lista, que es un subconjunto de extension o restriction:

  • extension - Evita que los tipos complejos derivados por extensión se utilicen para reemplazar este tipo complejo.
  • restriction - Evita que los tipos complejos derivados por restricción se utilicen para reemplazar este tipo complejo.
  • #all - Evita que todos los tipos complejos derivados se utilicen para reemplazar este tipo complejo.

final

Opcional. Evita que los tipos derivados del elemento complexType especificado se utilicen para reemplazar este tipo complejo. Este valor puede contener #all o una lista, que es un subconjunto de extension o restriction.

  • expansión - Evita la derivación a través de expansión.
  • restricción - Evita la derivación a través de restricción.
  • #all - Evita todas las derivaciones (expansión y restricción).

cualquier atributos

Opcional. Especifica cualquier otra propiedad con un espacio de nombres no de esquema.

Ejemplo

Ejemplo 1

El siguiente ejemplo posee un elemento tipo complejo llamado "note":

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

Ejemplo 2

En el siguiente ejemplo, hay un tipo complejo "fullpersoninfo", que extiende el tipo heredado utilizando tres elementos complementarios (address, city y country) y se deriva de otro tipo complejo "personinfo":

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

En el ejemplo anterior, el elemento "employee" superior debe contener en orden los siguientes elementos: "firstname", "lastname", "address", "city" y "country".