DTD有三种内置、外置和内外结合
第一种内置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem[
<!ELEMENT poem (author, title , content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空间不见人,但闻人语声</content>
</poem>
第二种外置
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT poem (author, title , content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "2.dtd">
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空间不见人,但闻人语声</content>
</poem>
第三种,内外结合
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "dtd_2.dtd"[
<!ELEMENT poem (author, title, content)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空间不见人,但闻人语声</content>
</poem>
DTD的修饰符号:
() 用来给元素分组 例如 (金庸|古龙|梁羽生),(王朔|余杰),毛毛 分成三组
| 在列出的元素中选择一个 (金庸|古龙|梁羽生) 三者必须出现其一
+ 出现至少一次 人+ 至少出现一个人
* 出现0次或者多次 猫*
? 要么出现要么不出现
,对象必须按照一定的顺序出现
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem[
<!ELEMENT poem (author+, title* , content?)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<author>王维</author>
<title>鹿柴</title>
</poem>
属性的定义:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem[
<!ELEMENT poem (author+, title* , content?)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
<!ATTLIST title name CDATA #REQUIRED >
]>
<poem>
<author>王维</author>
<title name="zhangsan">鹿柴</title>
<content>空山不见人</content>
</poem>
注意CDATA与CDATA节的区别
以及#PCDATA与CDATA的区别
ID属性的取值必须是唯一的。
IDREF指向其他已经定义的ID值。
关于普通实体与参数实体
1)普通实体实在dtd中定义,xml中使用,使用的时候格式为:&address
2)参数实体实在dtd中定义,dtd中使用,定义的时候使用%,使用的时候也需要使用%,%address
3)外部普通实体的定义方式是:
<!ENTITY address SYSTEM "http://www.shengsiyaun.com/xml/xml">
表示使用 http://www.shengsiyaun.com/xml/xml网址的内容替换掉address ,而不是字符串“http://www.shengsiyaun.com/xml/xml”
4)外部参数实体:
<!ENTITY % address SYSTEM "http://www.shengsiyaun.com/xml/xml">使用的时候: %address