Elemento <xsd:complexType>
Define un tipo complejo, que determina el conjunto de atributos y el contenido de un elemento.
<complexType
abstract = Boolean : false
block = (#all | List of (extension | restriction))
final = (#all | List of (extension | restriction))
id = ID
mixed = Boolean : false
name = NCName
{any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all |
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>
Atributos
abstract
Indicador de si el tipo complejo se puede utilizar en un documento de instancia. Si este valor es true, un elemento no puede utilizar este tipo complejo directamente sino que debe usar un tipo complejo derivado de este tipo complejo. El valor predeterminado es false.Opcional.
block
Tipo de derivación. El atributo block evita que se utilice un tipo complejo que tiene el tipo especificado de derivación en lugar de este tipo complejo. Este valor puede contener #all o una lista que sea un subconjunto de extensión o restricción. El atributo block solo se utiliza cuando, durante la validación, un documento de instancia invalida el tipo normal de un elemento mediante el atributo schema-instance:type. El atributo block es capaz de impedir que los elementos seleccionen tipos complejos definidos a través de una extensión, una restricción o ambas para reemplazar el tipo original especificado para el elemento.extension
Evita que se utilicen tipos complejos derivados por extensión en lugar de este tipo complejo.
restriction
Evita que se utilicen tipos complejos derivados por restricción en lugar de este tipo complejo.
#all
Evita que se utilicen todos los tipos complejos derivados en lugar de este tipo complejo.
Opcional.
final
Tipo de derivación. El atributo final evita el tipo especificado de derivación de este elemento complexType. Este valor puede contener #all o una lista que sea un subconjunto de extension o restriction.extension
Evita la derivación por extensión.
restriction
Evita la derivación por restricción.
#all
Evita todas las derivaciones (por extensión y por restricción).
Opcional.
id
Identificador de este elemento. El valor id debe ser de tipo ID y debe ser único dentro del documento que contiene este elemento.Opcional.
mixed
Indicador de si está permitido que aparezcan datos de caracteres entre los elementos secundarios de este tipo complejo. El valor predeterminado es false.Si el elemento simpleContent es secundario, no está permitido el atributo mixed.
Si el elemento complexContent es secundario, este atributo mixed puede ser invalidado por el atributo mixed en el elemento complexContent.
Opcional.
nombre
Nombre del tipo. El nombre no debe incluir un signo de dos puntos (NCName), como se define en la especificación de los espacios de nombres XML.Es necesario si el elemento contenedor es schema; en caso contrario, está prohibido.
Si se especifica, el nombre debe ser único entre todos los elementos simpleType y complexType.
Opcional.
Información del elemento
Número de apariciones |
Ilimitado en el esquema; una vez en el elemento. |
Elementos primarios |
|
Contenido |
annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
Notas
Un tipo complejo es esencialmente una definición de tipos de elementos que pueden contener atributos y elementos. Un elemento puede declararse con un atributo type que haga referencia a un elemento complexType que define la estructura, el contenido y los atributos de ese elemento. Un elemento también puede hacer referencia a un simpleType en su atributo type.
Un tipo complejo solo puede contener uno de los siguientes elementos, que determina el tipo de contenido permitido en él.
Elemento | Descripción |
---|---|
simpleContent |
El tipo complejo tiene datos de caracteres o un simpleType como contenido y no contiene elementos, pero puede contener atributos. |
complexContent |
El tipo complejo contiene solo elementos o no contiene elementos (está vacío). |
group |
El tipo complejo contiene los elementos definidos en el grupo al que se hace referencia. |
sequence |
El tipo complejo contiene los elementos definidos en la secuencia especificada. |
choice |
El tipo complejo permite uno de los elementos especificados en el elemento choice. |
all |
El tipo complejo permite que algunos o todos los elementos especificados en el elemento all aparezcan una vez. |
Si se especifica group, sequence, choice o bien all como elemento secundario, los atributos de complexType pueden ser declarados opcionalmente mediante los elementos siguientes.
Elemento | Descripción |
---|---|
atributo |
El tipo complejo contiene el atributo especificado. |
attributeGroup |
El tipo complejo contiene los atributos definidos en el attributeGroup al que se hace referencia. |
anyAttribute |
El tipo complejo puede contener cualquier atributo de los espacios de nombres especificados. |
Se puede utilizar cualquier número de elementos attribute o attributeGroup. También se puede utilizar una instancia de anyAttribute.
Si se especifica group, sequence, choice o all, los elementos deben aparecer en el orden siguiente.
group | sequence | choice | all
attribute | attributeGroup
anyAttribute
Ejemplos
En el ejemplo siguiente se muestra un tipo complejo que contiene un tipo simple (decimal) con una declaración de atributo y elemento que utiliza un tipo complejo.
En el ejemplo siguiente se muestra una instancia del elemento myShoeSize en un documento XML.
En el ejemplo siguiente se muestra el elemento myShoeSize con complexType definido anónimamente dentro del elemento. Observe la ausencia del atributo name.
Vea también
Referencia
Referencia de esquemas XML (XSD)
Elementos de los esquemas XML