Todos los atributos se declaran como tipos simples.
¿Qué es un atributo?
elementos simples no pueden tener atributos. Si un elemento tiene atributos, se considera para ser de un tipo complejo. Sin embargo, el propio atributo siempre es declarado como un tipo simple.
Cómo definir un atributo?
La sintaxis para definir un atributo es:
<xs:attribute name="xxx" type="yyy"/>
donde xxx es el nombre del atributo y yyy especifica el tipo de datos del atributo.
Esquema XML tiene una gran cantidad de tipos de datos incorporados. Los tipos más comunes son:
- xs: string
- xs: decimal
- xs: integer
- xs: boolean
- xs: Fecha
- xs: tiempo
Ejemplo
Aquí es un elemento XML con un atributo:
<lastname lang="EN">Smith</lastname>
Y aquí es la corresponding definición de atributo:
<xs:attribute name="lang" type="xs:string"/>
Por defecto y valores fijos para los atributos
Los atributos pueden tener un valor por defecto o un valor fijo especificado.
Un valor por defecto se asigna automáticamente al atributo cuando no se especifica ningún otro valor.
En el siguiente ejemplo el valor por defecto es "EN" :
<xs:attribute name="lang" type="xs:string" default="EN"/>
Un valor fijo también se asigna automáticamente al atributo, 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
Los atributos son opcionales por defecto. Para especificar que el atributo es necesario, utilice el "use" de atributos:
<xs:attribute name="lang" type="xs:string" use="required"/>
Restricción sobre el contenido
Cuando un elemento o atributo XML tiene un tipo de datos definido, se pone restricciones sobre el contenido del atributo del elemento o de.
Si un elemento XML es del tipo "xs:date" y contiene una cadena como "Hello World" , el elemento no será valida.
Con los esquemas XML, también se puede añadir sus propias restricciones a los elementos y atributos XML. Estas restricciones son llamados facetas. Puede leer más acerca de las facetas en el siguiente capítulo.