
Ya sabemos cómo declarar elementos, ahora veamos el modo de declarar los atributos asociados a un elemento. Para ello utilizamos la cadena <!ATTLIST
seguida del nombre del elemento asociado al atributo que se declara, luego el nombre de éste último seguido del tipo de atributo y del modificador. Este elemento puede usarse para declarar una lista de atributos asociada a un elemento, o repetirse el número de veces necesario para asociar a dicho elemento esa lista de atributos, pero individualmente.
Al igual que los elementos no todos los atributos son del mismo tipo, los más destacados son:
- Enumeración, es decir, el atributo solo puede tomar uno de los valores determinados dentro de un paréntesis y separados por el operador |.
<!ATTLIST fecha dia_semana (lunes|martes|miércoles|jueves|viernes|sábado|domingo) #REQUIRED>
CDATA
, se utiliza cuando el atributo es una cadena de texto.ID
, permite declarar un atributo identificador en un elemento. Hay que recordar que este valor ha de ser único en el documento. Además hay que tener en cuenta que los números no son nombres válidos en XML, por tanto no son un identificador legal de XML. Para resolverlo suele incluirse un prefijo en los valores y separarlo con un guión o una letra.IDREF
, permite hacer referencias a identificadores. En este caso el valor del atributo ha de corresponder con el de un identificador de un elemento existente en el documento.NMTOKEN
, permite determinar que el valor de un atributo ha de ser una sola palabra compuesta por los caracteres permitidos por XML.
¿También hemos de declarar si el valor de un atributo es obligatorio o no? Si, para ello se usan los siguientes modificadores:
#IMPLIED
, determina que el atributo sobre el que se aplica es opcional.#REQUIRED
, determina que el atributo tiene carácter obligatorio.#FIXED
, permite definir un valor fijo para un atributo independientemente de que ese atributo se defina explícitamente en una instancia del elemento en el documento XML.- Literal, asigna a un atributo el valor dado por una cadena entre comillas.
EJEMPLO
Si se tiene la siguiente estructura en un documento XML
<alumno edad=15>
<nombre>Olga</nombre>
<apellidos>Velarde Cobo</apellidos>
<dirección>El Percebe 13</dirección>
</alumno>
Un DTD que podría ajustarse sería:
<!ELEMENT alumno (nombre, apellidos, direccion)>
<!ATTLIST alumno edad CDATA #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellidos (#PCDATA)>
<!ELEMENT dirección (#PCDATA)>