DTD示例11

ID类型属性的值只能包含NMTOKEN允许的字符,并且必须以字母开头。没有元素类型可能指定了多个ID属性。 ID属性的值在所有ID属性的所有值之间必须是唯一的。

DTD声明

属性idcodeX唯一地确定它们的元素:

<!ELEMENT XXX (AAA+ , BBB+ , CCC+)>
<!ELEMENT AAA (#PCDATA)>
<!ELEMENT BBB (#PCDATA)>
<!ELEMENT CCC (#PCDATA)>
<!ATTLIST AAA 
      id ID #REQUIRED>
<!ATTLIST BBB 
      code ID #IMPLIED
      list NMTOKEN #IMPLIED>      
<!ATTLIST CCC 
      X ID #REQUIRED
      Y NMTOKEN #IMPLIED>

有效文档

所有ID值都是唯一的:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA id=a1/>
   <AAA id=a2/>
   <AAA id=a3/>
   <BBB code=Yiibai-1223-142-6 list=14:5/>
   <CCC X=zero Y=16 />
</XXX>

属性列表和Y的类型为NMTOKEN而不是ID。 因此,它们可以具有与ID属性相同的值,或者在多个元素中具有相同的值:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA id=L12/>
   <BBB code=QW list=L12/>
   <CCC X=x-0 Y=QW />
   <CCC X=x-1 Y=QW />
</XXX>

无效的文档

ID属性不能以数字开头或包含NMTOKEN中不允许的字符:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA id=L12/>
   <BBB code=#QW list=L12/>
   <CCC X=12 Y=QW />
</XXX>

ID属性必须具有唯一值:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA id=L12/>
   <BBB code=QW list=L12/>
   <CCC X=ZA Y=QW />
   <CCC X=ZA Y=QW />
</XXX>

ID属性必须具有唯一值。 idX都是ID类型:

<!DOCTYPE XXX SYSTEM tutorial.dtd>

<XXX>
   <AAA id=L12/>
   <BBB code=QW list=L12/>
   <CCC X=L12 Y=QW />
</XXX>