XSD Atributos


Todos los atributos se declaran como tipos simples.


¿Qué es un atributo?

Los elementos simples no pueden tener atributos. Si un elemento tiene atributos, se considera un tipo complejo. Sin embargo, los atributos en sí mismos siempre se declaran como tipos simples.


¿Cómo declarar un atributo?

La sintaxis para definir un atributo es

<xs:attribute name="xxx" type="yyy"/>

Aquí, xxx se refiere al nombre del atributo e yyy especifica el tipo de datos del atributo. XML Schema tiene muchos tipos de datos integrados.

Los tipos más comunes son:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

Ejemplo

Este es un elemento XML con un atributo:

Smith

Esta es la definición de atributo correspondiente:

<xs:attribute name="lang" type="xs:string"/>


Valores predeterminados y fijos de los atributos

Los atributos pueden tener un valor predeterminado o un valor fijo especificado.

Cuando no se especifica ningún otro valor, el valor predeterminado se asigna automáticamente al elemento.

En el siguiente ejemplo, el valor predeterminado es "EN":

<xs:attribute name="lang" type="xs:string" default="EN"/>

El valor fijo también se asigna automáticamente al elemento y no se puede especificar otro valor.

En el siguiente ejemplo, el valor fijo es "EN":

<xs:attribute name="lang" type="xs:string" fixed="EN"/>


Atributos opcionales y obligatorios

Por defecto, los atributos son opcionales. Para especificar un atributo como obligatorio, use el atributo "use":

<xs:attribute name="lang" type="xs:string" use="required"/>


Restricciones sobre el contenido

Cuando un elemento o atributo XML tiene un tipo de datos definido, se añaden restricciones al contenido del elemento o atributo.

Si el tipo de un elemento XML es "xs:date" y su contenido es una cadena como "Hello World", el elemento no pasará la validación.

Mediante XML Schema, también puede agregar sus propias restricciones a sus elementos y atributos XML. Estas restricciones se denominan facet (nota del editor: significa 'caras' de un poliedro, puede traducirse como 'facetas de restricción'). Aprenderá más sobre facet en la próxima sección.

Otras extensiones