El elemento <xs:attribute> en XSD (XML Schema Definition) se utiliza para definir un atributo que puede ser asociado a un elemento XML. Los atributos son pares de nombre-valor que existen dentro de la etiqueta de inicio de un elemento XML. En el contexto de un esquema XML, <xs:attribute> permite especificar el nombre del atributo, su tipo de dato, y si es obligatorio u opcional, entre otras cosas.
<xs:attribute name="nombreDelAtributo" type="tipoDeDato"/>
Supongamos que queremos definir un elemento persona que tiene un atributo edad de tipo xs:integer.
En este ejemplo, el elemento persona puede tener un atributo edad que es de tipo entero (xs:integer).
XML:
<persona edad="30"></persona>
<xs:element name="persona">
<xs:complexType>
<xs:sequence>
<!-- Definiciones de otros elementos, si son necesarios -->
</xs:sequence>
<xs:attribute name="edad" type="xs:integer"/>
</xs:complexType>
</xs:element>
name: El nombre del atributo.
type: El tipo de dato del atributo (por ejemplo, xs:string, xs:integer, xs:date, etc.).
use: Indica si el atributo es obligatorio (required), opcional (optional), o prohibido (prohibited). El valor por defecto es optional.
default: Especifica un valor por defecto para el atributo si no se proporciona uno en el documento XML.
fixed: Establece un valor fijo para el atributo, lo que significa que el atributo debe tener este valor si se especifica.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Definición del elemento libro con varios atributos -->
<xs:element name="libro">
<xs:complexType>
<xs:sequence>
<!-- El elemento libro puede tener elementos internos aquí -->
</xs:sequence>
<!-- Atributo obligatorio (required) -->
<xs:attribute name="isbn" type="xs:string" use="required"/>
<!-- Atributo opcional (optional) -->
<xs:attribute name="edicion" type="xs:integer"/>
<!-- Atributo prohibido (prohibited) -->
<!-- Nota: En práctica, un atributo prohibido se usaría en extensiones o restricciones de tipos complejo --> <!-- <xs:attribute name="prohibido" type="xs:string" use="prohibited"/> -->
<!-- Atributo con valor por defecto (default) -->
<xs:attribute name="idioma" type="xs:string" default="Español"/>
<!-- Atributo con valor fijo (fixed) -->
<xs:attribute name="formato" type="xs:string" fixed="Digital"/>
</xs:complexType>
</xs:element>
</xs:schema>