xml语法
xml保留PCDATA中的空白符,回车换行缩进
dtd-1
内部,外部,公共DTD
元素
属性
实体
定义子元素
有序子元素:逗号隔开
互斥子元素:竖线隔开
子元素出现的频率:
+一次或多次
*零次或多次
?零次或一次
无必须出现一次
组合子元素:使用圆括号
dtd-2
如果想对某一个元素中的属性进行限制,就用下面的
<!ATTLIST video id CDATA #IMPLIED>
元素 属性名 属性类型 属性值声明
可以同时声明多个属性但不能重复,直接空格隔开
枚举
默认值 <!ATTLIST video type (java|xml|database) "xml">
固定值 <!ATTLIST video type (java|xml|database) #FIXED "xml">
必须值 <!ATTLIST video type (java|xml|database) #REQUIRED>
隐含值 <!ATTLIST video type (java|xml|database) #IMPLIED>
dtd-3
实体的使用
外部DTD的使用
DTD的优缺点
实体分类
可以是一段要替换的文本,xml标记或外部文件
内置实体
字符实体 ©
普通实体 需要在DTD中声明
参数实体 中允许在DTD中使用
引用外部DTD
系统标识符
<!DOCTYPE videos SYSTEM "uri" [
可选的内部DTD声明
]>
公共标识符
<!DOCTYPE videos PUBLIC "FPI" "uri" >
FPI的基本格式:-//W3C/DTD XHTML 1.0 Transitional//EN
DTD的优缺点
缺点
DTD语法与xml不一致
缺少对xml命名空间的支持
缺少数据分类
内容模型描述受限制
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE videos SYSTEM "test.dtd"> <videos> <video id="v001" vid="id1" > <title>java &unkown;</title> </video> <video id="v002" vid="id2" > <author>li</author> <publish /> </video> </videos> test.dtd <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT videos (video*)> <!ELEMENT video (title|(author,publish))> <!ATTLIST video id CDATA #REQUIRED> <!ATTLIST video vid ID #REQUIRED> <!ATTLIST video type (java|xml|database) #FIXED "xml"> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT publish EMPTY> <!ENTITY unkown "未知数据">