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>