Atributos de tipo IDREF en DTD
En una DTD, los atributos declarados IDREF son aquellos cuyo valor tiene que existir en otro atributo ID del documento XML.
EJEMPLO En la DTD del siguiente documento XML, se indica que los elementos "pelicula" que se escriban, deben incluir el atributo direccion, cuyo valor estará asignado a un atributo ID de otro elemento del documento. En este caso, el valor estará asignado a un atributo coddir de un elemento "director":
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cine [
<!ELEMENT cine (directores, peliculas)>
<!ELEMENT directores (director)*>
<!ELEMENT director (#PCDATA)>
<!ATTLIST director coddir ID #REQUIRED>
<!ELEMENT peliculas (pelicula)*>
<!ELEMENT pelicula (#PCDATA)>
<!ATTLIST pelicula direccion IDREF #REQUIRED>
]>
<cine>
<directores>
<director coddir="CE">Clint Eastwood</director>
<director coddir="JC">James Cameron</director>
</directores>
<peliculas>
<pelicula direccion="JC">Avatar</pelicula>
<pelicula direccion="CE">Mystic River</pelicula>
<pelicula direccion="JC">Titanic</pelicula>
</peliculas>
</cine>
- Obsérvese que, por ejemplo, para la película Titanic se ha indicado en su atributo direccion el valor "JC", que es el valor del atributo coddir del director James Cameron.
- En este documento XML, el atributo de tipo IDREF se ha definido obligatorio, #REQUIRED. Pero, a un atributo IDREF también se le puede especificar un valor por defecto, un valor fijo o que sea opcional escribirlo, #IMPLIED.