У вас может появиться необходимость связать данные при помощи использования идентификаторов, работа которых соответствует первичным и внешним ключам в реляционной базе данных. Например, может потребоваться, чтобы идентификатор memory соответствовал идентификатору media, носителя, на котором эта запись размещена. Типы данных ID и IDREF позволяют вам обеспечить такую целостность данных:
<!ATTLIST media mediaid ID #REQUIRED > <!ATTLIST memory tapeid IDREF #REQUIRED >
Эта запись добавляет в файл два ограничения. Во-первых, значение каждого mediaid должно быть уникальным, значение каждого tapeid должно соответствовать существующему mediaid.
Каждый элемент может иметь максимум один атрибут ID. Важно понимать, что все значения ID должны принадлежать к одному пулу (пространству значений). Если вы задаете более одного типа атрибутов ID, у вас нет способа заставить IDREF ссылаться на определенный атрибут ID.