attribute
El elemento attribute
se utiliza para declarar un atributo de un elemento XML.
La información que permite definir es:
- El nombre del atributo.
- Su tipo de dato.
- El valor por defecto.
- Si tiene un valor fijo y cuál es.
- Si es obligatorio u opcional.
Supongamos un documento XML con el siguiente elemento y su atributo:
<ciudad provincia="Lugo">Monforte de Lemos</ciudad>
El elemento XSD que permite validar el código anterior es el siguiente:
<xs:attribute name="provincia" type="xs:string" default="A Coruña"/>
Los atributos que se pueden definir en attribute
son:
Atributo | Descripción |
---|---|
name | Nombre del atributo. |
type | Tipo de dato permitido como valores del atributo provincia . |
default | Valor predeterminado. |
use | Con el valor required se indica que se trata de un atributo obligatorio. Si se indica este atributo, no se puede utilizar default de forma simultánea. |
fixed | Permite asignar un valor fijo al atributo. |
Adicionalmente, haciendo uso de otros elementos XSD, podemos definir restricciones adicionales en los valores del atributo.
Dependencia de un elemento XML
Cada vez que se utilice el elemento attribute
de XML Schema, se deberá incluir un element
, ya que un atributo siempre va a depender de un elemento. Es decir, un atributo no existe a no ser que exista previamente un elemento.
El atributo provincia
no puede existir si no existe <ciudad>
:
<ciudad provincia="Lugo">Monforte de Lemos</ciudad>
El documento XSD que permite validar el XML sería el siguiente:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ciudad">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="provincia" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
En este punto no es necesario entender cómo funciona el código anterior, sino saber que, cuando tenemos que añadir un attribute
, tendremos que hacer lo mismo con element
.