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 tipoID
en el mismo documento XML. - Todo atributo declarado de tipo
IDREF
tiene 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
id
es un identificador de un idioma. - Cada idioma debe tener un valor de
id
diferente, ya que se trata de un atributo de tipoID
, lo cual permite identificar únicamente a un idioma. - En cada país existe un atributo
idioma
que hace referencia a un identificador que se ha definido previamente. Como se puede observar, solo se utilizan los valoreses
ypt
porque son los valores de identificadores que se han definido en los atributosid
.