Los elementos pueden tener 0, 1 o varios atributos y se definen con la etiqueta ATTLIST. Los tipos de atributos son:
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color CDATA #REQUIRED>
]>
/* EN XML */
<ejemplo color="amarillo"></ejemplo>/* CORRECTO */
<ejemplo></ejemplo>/* NO CORRECTO POR FALTA DEL ATRIBUTO "COLOR"*/
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color NMTOKEN #REQUIRED>
]>
/* EN XML */
<ejemplo color=""></ejemplo>/* CORRECTO */
<ejemplo color="amarillo oscuro"></ejemplo>/* NO CORRECTO POR TENER UN ESPACIO EN BLANCO*/
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color NMTOKENS #REQUIRED>
]>
/* EN XML */
<ejemplo color="amarillo oscuro"></ejemplo>/* CORRECTO */
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color (azul|blanco|rojo) #REQUIRED>
]>
/*- EN XML */
<ejemplo color=""></ejemplo>/* CORRECTO */
<ejemplo color="azul"></ejemplo>/* CORRECTO */
<ejemplo color="amarillo"></ejemplo>/* NO CORRECTO POR QUE AMARILLO NO ESTA EN LA LISTA DE VALORES*/
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo (libro*)>
<!ELEMENT libro(#PCDATA)>
<!ATTLIST libro codigo ID #REQUIRED>
]>
/* EN XML */
<ejemplo>/* CORRECTO */
<libro codigo="L1">Manual de Java</libro>
<libro codigo="L2">Manual de JavaScript</libro>
</ejemplo>
<ejemplo>/* NO CORRECTO PORQUE LOS VALORES DEL ID NO SON DEL MISMO TIPO */
<libro codigo="1">Manual de Java</libro>
<libro codigo="L2">Manual de JavaScript</libro>
</ejemplo>
<ejemplo> /* NO CORRECTO PORQUE LOS VALORES DEL ID SON IDENTICOS, NO SE PUEDEN REPETIR*/
<libro codigo="L1">Manual de Java</libro>
<libro codigo="L1">Manual de JavaScript</libro>
</ejemplo>
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo ((libro|prestamo)*)>
<!ELEMENT libro(#PCDATA)>
<!ATTLIST libro codigo ID #REQUIRED>
<!ELEMENT prestamo(#PCDATA)>
<!ATTLIST prestamo libro IDREF #REQUIRED>
]>
/* EN XML */
<ejemplo>/* CORRECTO */
<libro codigo="L1">Manual de Java</libro>
<prestamo libro="L1">José Manuel</prestamo>
</ejemplo>
<ejemplo>/* NO CORRECTO PORQUE LOS VALORES DEL ID NO COINCIDEN */
<libro codigo="L1">Manual de Java</libro>
<prestamo libro="L2">José Manuel</prestamo>
</ejemplo>
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo ((libro|prestamo)*)>
<!ELEMENT libro(#PCDATA)>
<!ATTLIST libro codigo ID #REQUIRED>
<!ELEMENT prestamo(#PCDATA)>
<!ATTLIST prestamo libro IDREFS #REQUIRED>
]>
/* EN XML */
<ejemplo>/* CORRECTO */
<libro codigo="L1">Manual de Java</libro>
<libro codigo="L2">Manual de JavaScript</libro>
<prestamo libro="L1 L2">José Manuel</prestamo>
</ejemplo>
<ejemplo>/* NO CORRECTO PORQUE EL VALOR DEL ID L3 NO COINCIDE CON NINGÚN VALOR DEL LIBRO*/
<libro codigo="L1">Manual de Java</libro>
<libro codigo="L2">Manual de JavaScript</libro>
<prestamo libro="L3">José Manuel</prestamo>
</ejemplo>
Los valores iniciales de los atributos son los siguientes:
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color CDATA #REQUIRED>
]>
/* EN XML */
<ejemplo color="amarillo oscuro"></ejemplo>/* CORRECTO */
<ejemplo></ejemplo>/* NO CORRECTO POR FALTAR EL ATRIBUTO COLOR*/
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color NMTOKEN #IMPLIED>
]>
/* EN XML */
<ejemplo color=""></ejemplo>/* CORRECTO */
<ejemplo color="amarillo oscuro"></ejemplo>/* CORRECTO */
<ejemplo color="amarillo"></ejemplo>/* CORRECTO */
<ejemplo></ejemplo>/* CORRECTO */
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color NMTOKEN #FIXED "verde">
]>
/* EN XML */
<ejemplo color=""></ejemplo>/* NO CORRECTO PORQUE NO TIENE COMO VALOR EL VERDE*/
<ejemplo color="amarillo"></ejemplo>/* NO CORRECTO PORQUE NO TIENE COMO VALOR EL VERDE*/
<ejemplo color="verde"></ejemplo>/* CORRECTO */
<ejemplo></ejemplo>/* CORRECTO */
<!DOCTYPE ejemplo[
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color NMTOKEN "verde">
]>
/* EN XML */
<ejemplo color=""></ejemplo>/* CORRECTO, SE QUEDARA VACIA*/
<ejemplo color="amarillo"></ejemplo>/* CORRECTO PORQUE TIENE COMO VALOR LO QUE HA METIDO EL USUARIO*/
<ejemplo color="verde"></ejemplo>/* CORRECTO, YA ESTA ASIGNADO */
<ejemplo></ejemplo>/* CORRECTO, PORQUE SE LE ASIGNARA VERDE*/