(一个可以用来校验xml有效性的网站:http://www.xmlvalidation.com/)
(经测试 eclipse neon 对于dtd的校验并不严格,比如DOCTYPE后面的根元素名与实际跟元素名不一致也能通过,可能是DTD技术已经过时了,学习的时候建议使用上面的网站进行测试)
内部DTD
格式:
<!DOCTYPE 根元素名[]
元素描述
>
XML文档主体部分
示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE messages[
<!ELEMENT messages (message)*>
<!ELEMENT message (title,content,hashcode)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
<!ELEMENT hashcode (#PCDATA)>
]>
<messages>
<message>
<title>hello,world</title>
<content>hello</content>
<hashcode>2kljfosaf7912</hashcode>
</message>
</messages>
外部DTD
ExternalDTD.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT messages (message)*>
<!ELEMENT message (title,content,hashcode)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
<!ELEMENT hashcode (#PCDATA)>
ExternalDTD.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE minedtd SYSTEM "ExternelDTD.dtd">
<messages>
<message>
<title>hello,world</title>
<content>hello</content>
<hashcode>2kljfosaf7912</hashcode>
</message>
</messages>
公用DTD
将上例的SYSTEM换成PUBLIC,则意味着使用公有DTD,使用公有DTD时,还需给该DTD指定一个标识名。
格式:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 根元素 public "DTD的标识名" "公用DTD的URI">
实例
暂缺
----