JavaSE_编写DTD(文档约束)
一、编写DTD
定义元素
- dtd文件后缀名为.dtd
<!DLEMENT>
可以定义元素- 判断元素是简单元素还是复杂元素。
3.1简单元素:没有子元素
3.2复杂元素:有子元素的元素
4.约束下面图片的标签元素则
可按照DTD语法规则:<!DLEMENT 元素名 (元素类型)>
-
简单元素:
- EMPTY:表示标签体为空
- ANY:表示标签体可以为空也可以不为空
- PCDATA:表示该元素的内容部分为字符串
-
复杂元素
- 直接写子元素的名称
- 多个子元素可以使用",“或者”|"隔开
- “,”:表示定义子元素的顺序
- “|”:表示子元素只能出现任意一个
- 子元素名称后面还可以跟"?"、"+"、"*"、
- “?”:表示这个元素可以出现零次或一次,
- “+”:表示一次或多次
- "*"表示零次或多次
- 如果不写则表示出现一次
- 直接写子元素的名称
<!DLEMENT persons (person+)> //复杂元素
<!DLEMENT person (name,age)> //复杂元素
<!DLEMENT name (#PCDATA)> //简单元素
<!DLEMENT age (#PCDATA)> //简单元素
定义属性
5.约束下面图片的标签元素则
可按照DTD语法规则:<!ATTLIST 元素名名称 属性名称 属性的类型 属性的约束>
- 属性的类型:
- CDATA类型:普通字的字符串
- 属性的约束:
- #REQUIRED:必须的
- #IMPLIED:属性不是必须的
- #FIXED value:属性值是固定的
<!ATTLIST person id #FIXED "p1">
二、DTD的三种引入方式
DOCTYPE:文档类型
persons:自己约束的根元素名称
SYSTEM:表示引入的是本地文件
[]:约束内容
1.引入本地dtd
<!DOCTYPE 根元素名称 SYSTEM 'DTD文件的路径'>
例如:<!DOCTYPE persons SYSTEM 'personsdtd.dtd'>
2.在xml文件内部引入
<!DOCTYPE persons SYSTEM [DTD文件内容]>
例如:<!DOCTYPE persons SYSTEM [
<!DLEMENT persons (person)>
<!DLEMENT person (name,age)>
<!DLEMENT name (#PCDATA)>
<!DLEMENT age (#PCDATA)>
]>
3.引入网络dtd
<!DOCTYPE persons PUBLIC "dtd文件的名称" "dtd文档的URL">