Ⅰ DTD简介
思维导图
DTD用于约束xml的文档格式,保证xml是一个有效的xml(也就是说在xml中引入DTD约束让别人不能在xml中随便写入内容)
DTD分类: 内部DTD,外部DTD
Ⅱ DTD写法及规则
内部DTD定义语法:<!DOCTYPE 根元素 [ 元素声明 ]>
元素定义
元素定义格式 <!ELEMENT 元素名 元素类型>
<!ELEMENT 元素名 EMPTY> ----空元素
<!ELEMENT 元素名 (#PCDATA)> ----文本元素
<!ELEMENT 元素名 (元素1,元素2)> ---混合元素
3.2 元素个数限制
?: 0/1个
* : 0-n个
+ : 1-n个
, 和
| 或者
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
<!ELEMENT persons (person+) > <!-- +是0-n个 -->
<!ELEMENT person (name,age,contact,br?) > <!-- ?是0或1个 -->
<!ELEMENT contact (phone|email) > <!-- |=或 -->
<!ELEMENT name (#PCDATA) ><!-- #PCDATA是文本元素 -->
<!ELEMENT age (#PCDATA) >
<!ELEMENT phone (#PCDATA) >
<!ELEMENT email (#PCDATA) >
<!ELEMENT br EMPTY >
]>
<persons>
<person>
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br />
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
Ⅲ 属性定义
属性定义格式 <!ATTLIST 元素名 属性名 属性类型 描述>(属性是属于元素的,所以定义属性一定要定义元素)
属性类型
- ID id类别
- (男|女) 选项类别
- CDATA 文本类别
- IDREF 依赖类别
属性描述
- #REQUIRED 必填
- # IMPLIED 非必填
- ‘ 默认值 ’ (只要选项类别才能使用默认值描述)
案例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
<!ELEMENT persons (person+) > <!-- +是0-n个 -->
<!ELEMENT person (name,age,contact,br?) > <!-- ?是0或1个 -->
<!ELEMENT contact (phone|email) > <!-- |=或 -->
<!ELEMENT name (#PCDATA) ><!-- #PCDATA是文本元素 -->
<!ELEMENT age (#PCDATA) >
<!ELEMENT phone (#PCDATA) >
<!ELEMENT email (#PCDATA) >
<!ELEMENT br EMPTY >
]>
<!-- 属性定义 -->
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<persons>
<person>
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br />
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
XML
1.xml声明 一般是xml文档的第一行
2.根元素 有且只有一个根元素
3.元素
所有的xml元素都必须有结束标签
xml标签区分大小写
xml必须正确嵌套
名称命名规则:可包含字母,数字和其他字符;不能以数字或标点符号开始;中不能包含空格。