DTD属性类型ID:值为唯一,并且该值必须符合XML的命名规范,否则无法通过验证!
如:library.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library[
<!ELEMENT library (category+)>
<!ELEMENT category (book+)>
<!ELEMENT book (name,author,note,prize)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT note (#PCDATA)>
<!ELEMENT prize (#PCDATA)>
<!ATTLIST library name CDATA #REQUIRED>
<!ATTLIST category id ID #REQUIRED>
<!ATTLIST book id ID #REQUIRED>
<!-- ID 类型的属性必须为 #REQUIRED -->
]>
<library name="ZhuHai Library">
<category id="1">
<book id="101">
<name>Thinking in JAVA</name>
<author>American</author>
<note>A good book to learn java well!</note>
<prize>75.00</prize>
</book>
</category>
<category id="2">
<book id="201">
<name>A Newer to Guitar</name>
<author>American</author>
<note>A good book to learn guitar well!</note>
<prize>25.00</prize>
</book>
</category>
</library>
将该文件http://www.w3school.com.cn/xml/xml_validator.asp的XML验证器中验证将报错,并且提示
"名字以无效字符开头"!
将上述id属性的值前加上"字母"或者_以符合XML命名规范再次验证则可通过!
<library name="ZhuHai Library">
<category id="c1">-----------------------------(1
<book id="b101">-----------------------------(2
<name>Thinking in JAVA</name>
<author>American</author>
<note>A good book to learn java well!</note>
<prize>75.00</prize>
</book>
</category>
<category id="c2">
<book id="b201">
<name>A Newer to Guitar</name>
<author>American</author>
<note>A good book to learn guitar well!</note>
<prize>25.00</prize>
</book>
</category>
</library>
整个文件中的ID不可重复,即使不在同一类ELEMENT中,例如(1中已使用c1,那么(2中不可使用c1。