xml dtd 内部dtd 外部DTD 公共DTD

时间:2023-03-08 15:45:20

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

实例

暂缺

----