XML约束之DTD
程序员文章站
2022-05-30 13:13:08
...
语法:
1 XML使用dtd
1.1 引入外部dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件路名">
dtd内容:
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
1.2 在xml内部定义dtd文件
<!DOCTYPE 根元素名称[
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
1.3 引入网络上外部的dtd文件,框架使用
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文档路径">
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
2 元素的定义:
2.1 简单元素:
<!ELEMENT 元素名 约束>
<!ELEMENT name (#PCDATA)>:约束内容是字符串
<!ELEMENT name EMPTY>:约束内容是空,但是可以有属性
<!ELEMENT name ANY>:约束内容随意
2.2 复杂元素:
<!ELEMENT 元素名 (name,age,sex,school)>默认子元素都只能出现一次,且必须出现
+:一次或多次
*:零次或一次或多次
?:零次或一次
子元素用逗号隔开,表示元素出现的顺序
子元素用|隔开,表示子元素只能出现其中一个
3 属性的定义:
语法:<!ATTLIST 元素名称 属性名称 属性类型 属性约束>
3.1 属性类型:
CDATA:字符串类型
<!ATTLIST name id1 CDATA #REQUIRED>
<!ATTLIST name id CDATA #REQUIRED>
<name id="1">zhangsan</name>
枚举:只能在范围内取值
<!ATTLIST age id2 (AA|BB|CC) #REQUIRED>
<!ATTLIST sex value (0|1) #REQUIRED>
<sex value="0"></sex>
ID:值只能是字母或者下划线开头
<!ATTLIST name id3 ID #REQUIRED>
<!ATTLIST age id3 ID #REQUIRED>
<age id3="id3">20</age>
IDREF:值为另一个元素的id
IDREFS:值为其他多个元素的值
ENTITY:值为一个实体
ENTITYS:值为多个实体
3.2 属性的约束:
#REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED:表示属性值必须为这个固定值 #FIXED “AAA”,固定为AAA
直接值:默认值,不写该属性,则默认有该属性和值,写了属性则使用写的值
<!ATTLIST school id CDATA "bjdx">
4 实体的定义
语法:<!ENTITY 实体名称 "实体值">,如<!ENTITY TEST "test">
使用:&实体名称;,如&TEST
定义范围:一般在xml内部定义的dtd内容中定义,在外部dtd定义的时候可能获取不到.
下一篇: XML之DTD规则