XML引用DTD约束:
1. 内部引用,内部定义DTD:
<!DOCTYPE 根元素 [ 各种元素声明 ]>
2. 引用系统本地DTD:
<!DOCTYPE 根元素 SYSTEM "DTD文件的URL.dtd">
3. 引用公共DTD
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文件的URL">
例子:
我们在创建XHTML时,就有这种引用公共DTD的方式获取网络DTD,是W3C定义好的。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
DTD语法:
1. 元素的定义:
<!ELEMENT 元素名称 元素类型>
元素类型是指这个元素,有几个子元素,或者说,这个元素是什么类型(文本等)。
1)包含多个子元素:
<!ELEMENT book (name,price)>
用逗号分隔元素,表示必须按照这个书写顺序来书写XML
<!ELEMENT book (name|price)>
用 | 分隔,表示name和price任选其一,只能使用一个
1-1) 限定符:
+:一次或多次
*:0次或多次
?:0次或一次
<!ELEMENT store (book+)>
2) 无子标签的元素类型:
<!ELEMENT name (#PCDATA)>
EMPTY:用于定义空元素(没有#号,没有括号)
ANY:表示元素内容为任意类型(没有#号,没有括号)
<!ELEMENT name ANY>
3) 组合方式:
<!ELEMENT MYFILE ( ( TITLE*, AUTHOR?, EMAIL )* | COMMENT ) >
MYFILE元素下面,出现( TITLE*, AUTHOR?, EMAIL )0次或多次,或者COMMENT出现一次。
( TITLE*, AUTHOR?, EMAIL ),如果出现的话,必须按照定义的顺序。
2. 属性的定义
格式:
< ! ATTLIST 元素名
属性名1 属性类型 默认值
属性名2 属性类型 默认值
>
属性类型:字符、唯一ID、.........
CDATA 字符数据
ID 唯一的id
默认值:是否必填,是否固定,固定值是多少。
#REQUIRED 属性值是必须的
#IMPLIED 属性值不是必须的
#FIXED value 属性值是固定的
例子一枚:
bookstore.dtd文件:
1 2 3 6 7
bookstore.xml文件:
1 2 34 5 8JAVA 6$99 7