DTD:
1.创建一个文件,后缀名为.dtd
2.判断元素是简单元素还是复杂元素:
简单元素:有子元素的元素复杂元素。<!ELEMENT 元素名称 (#PCDATA)>
复杂元素:有子元素的元素。<!ELEMENT 元素名称 (子元素)>
3.需要在XML文件中引入dtd文件 <!DOCTYPE 根元素名称 SYSTEM “dtd文件的路径”>
DTD的引入方式
1.引入外部的dtd文件
<!DOCTYPE 根元素名称 SYSTEM “dtd文件路径”>
2.使用内部的dtd约束
<!DOCTYPE person[
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCADATA)>
]>
3.使用外部的dtd文件(网络上的)
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
DTD定义元素
语法:<!ELEMENT 元素名 约束>
简单元素
如:<!ELEMENT name (#PCDATA)>
约束:
1.(#PCDATA):约束name是字符串类型
2.EMPTY:元素为空(如:<sex></sex>)
3.ANY:任意(可为空也可不为空)
复杂元素
如:<!ELEMENT person (name,age,sex,school)>
这样定义子元素只能出现一次,子元素出现的次数:
1. + :表示子元素可以出现一次或者多次。
2. ?:表示子元素可以出现零次或者一次。
3. * :表示子元素可以出现零次或者多次。
- 子元素直接使用逗号进行隔开,表示子元素出现的次数。
- 子元素直接用竖线(|)隔开,表示子元素只能出现其中任意一个。(枚举)
DTD定义属性
语法:<!ATTLIST 元素名称
属性名称 属性类型 属性的约束
.......
>
如:<!ATTLIST name
ID1 CDATA #REQUIRED
>
属性的类型:
- CDATA:字符串
- 枚举:表示只能在一定的范围内出现值,但是只能每次出现其中一个
- ID :值只能以字母或者下划线开头
属性约束:
- #REQUIRED: 属性必须存在。
- #IMPLIED:属性可有可无。
- #FIXED:表示国定的一个值。 (#FIXED "ABC")
- 直接值:如果元素不写属性,则按约束中写的属性值为准。如果元素写了则按元素写的为准。(<!ATTLIST school ID CDATA "ABC")
实体定义
语法:<!ELEMENT 实体名称 "实体的值">
使用实体 &实体名称; 例&TEST;
实体定义需要写在内部的dtd中。