IDREF
属性的值必须与文档中某些ID
属性的值匹配。 IDREFS
属性的值可以包含对具有以空格分隔的ID
属性的元素的多个引用。
DTD声明
属性id
和mark
唯一地确定元素。 属性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
值都是唯一的,所有IDREF
和IDREFS
都指向具有相关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
属性,带有引用a3
或b001
属性:
<!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>