欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 java xml