(一个可以用来校验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">
实例
暂缺
----