IDREF
Los atributos declarados IDREF son aquellos cuyo valor tiene que existir en otro atributo ID del documento XML.
<!ATTLIST pais idioma IDREF #REQUIRED>
Algunas consideraciones sobre este tipo de atributo son:
- Para que se pueda utilizar
IDREF, antes se ha tenido que definir un atributo tipoIDen el mismo documento XML. - Todo atributo declarado de tipo
IDREFtiene que ser#IMPLIED(opcional) o#REQUIRED(obligatorio).
Consideremos el siguiente documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mundo [
<!ELEMENT mundo (idiomas, paises)>
<!ELEMENT idiomas (idioma+)>
<!ELEMENT idioma (#PCDATA)>
<!ATTLIST idioma id ID #REQUIRED>
<!ELEMENT paises (pais+)>
<!ELEMENT pais (#PCDATA)>
<!ATTLIST pais idioma IDREF #REQUIRED>
]>
<mundo>
<idiomas>
<idioma id="es">Español</idioma>
<idioma id="pt">Portugés</idioma>
</idiomas>
<paises>
<pais idioma="pt">Portugal</pais>
<pais idioma="es">Colombia</pais>
<pais idioma="es">Argentina</pais>
<pais idioma="pt">Brasil</pais>
</paises>
</mundo>
En el documento anterior:
- El atributo
ides un identificador de un idioma. - Cada idioma debe tener un valor de
iddiferente, ya que se trata de un atributo de tipoID, lo cual permite identificar únicamente a un idioma. - En cada país existe un atributo
idiomaque hace referencia a un identificador que se ha definido previamente. Como se puede observar, solo se utilizan los valoresesyptporque son los valores de identificadores que se han definido en los atributosid.