DTD示例12

IDREF属性的值必须与文档中某些ID属性的值匹配。 IDREFS属性的值可以包含对具有以空格分隔的ID属性的元素的多个引用。

DTD声明

属性idmark唯一地确定元素。 属性ref引用这些元素:

<!ELEMENT XXX (AAA+ , BBB+, CCC+, DDD+)>
<!ELEMENT AAA (#PCDATA)>
<!ELEMENT BBB (#PCDATA)>
<!ELEMENT CCC (#PCDATA)>
<!ELEMENT DDD (#PCDATA)>
<!ATTLIST AAA 
      mark ID #REQUIRED>
<!ATTLIST BBB 
      id ID #REQUIRED>      
<!ATTLIST CCC 
      ref IDREF #REQUIRED>
<!ATTLIST DDD 
      ref IDREFS #REQUIRED>

有效的文档

所有ID值都是唯一的,所有IDREFIDREFS都指向具有相关ID的元素:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA mark=a1/>
   <AAA mark=a2/>
   <AAA mark=a3/>
   <BBB id=b001 />
   <CCC ref=a3 />
   <DDD ref=a1 b001 a2 />
</XXX>

无效的文档

没有ID属性,带有引用a3b001属性:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA mark=a1/>
   <AAA mark=a2/>   
   <BBB id=b01 />
   <CCC ref=a3 />
   <DDD ref=a1 b001 a2 />
</XXX>

元素CCC中的属性ref的类型为IDREF。 它只能包含一个引用:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA mark=a1/>
   <AAA mark=a2/>
   <AAA mark=a3/>
   <BBB id=b001 />
   <CCC ref=a1 b001 a2 />
   <DDD ref=a1 b001 a2 />
</XXX>