什么是XML约束?
@H_403_13@
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。
@H_403_13@
@H_403_13@
常用的约束技术:XML DTD,XML Schema
XML DTD:
DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写
@H_403_13@
XML文件使用 DOCTYPE 声明语句来指明它所遵循的DTD文件
@H_403_13@
@H_403_13@
DTD关联方式:
@H_403_13@
使用内部DTD
@H_403_13@
使用外部DTD
@H_403_13@
使用公共DTD
@H_403_13@
@H_403_13@
内部DTD:
在xml文件内部书写DTD规范
@H_403_13@
格式:
@H_403_13@
<!DOCTYPE 书架 […具体规范内容…]>
例如:
例如:
外部DTD:
引用的文件在本地
@H_403_13@
格式:<!DOCTYPE 文档根结点
SYSTEM "DTD文件的URL">
@H_403_13@
例如: <!DOCTYPE books SYSTEM “book.dtd”>
@H_403_13@
@H_403_13@ books3.xml:
books3.dtd:
books3.dtd:
公共DTD:
引用的文件是一个公共的文件
@H_403_13@
格式:
@H_403_13@
<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
例如: @H_403_13@
例如: @H_403_13@
<!DOCTYPE web-app PUBLIC
@H_403_13@
"-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN“
@H_403_13@
"http://java.sun.com/dtd/web-app_2_3.dtd">
@H_403_13@
@H_403_13@ 例如:
? : 0 1
* : >=0
+ : >=1
() : 分组
| : 选择
,: 顺序
@H_403_13@ @H_403_13@ 元素内容的类型:
#PCDATA:只能书写字符,不能包含子元素,注意: (#PCDATA)
EMPTY:元素内容为空
ANY:元素内容任意
例如:
* CDATA,字符
* (),选择
* ID,设置唯一标识,注意,必须字母开头
* IDREF,引用又存在的ID值
属性定义:
格式:<!ATTLIST 元素名称 [属性名称 属性类型 约束 ...]>
例如:
公共DTD约束语法细节:
元素(ELEMENT):
元素的定义:? : 0 1
* : >=0
+ : >=1
() : 分组
| : 选择
,: 顺序
@H_403_13@ @H_403_13@ 元素内容的类型:
#PCDATA:只能书写字符,不能包含子元素,注意: (#PCDATA)
EMPTY:元素内容为空
ANY:元素内容任意
例如:
属性(ATTLIST):
属性类型:* CDATA,字符
* (),选择
* ID,设置唯一标识,注意,必须字母开头
* IDREF,引用又存在的ID值
属性定义:
格式:<!ATTLIST 元素名称 [属性名称 属性类型 约束 ...]>
例如:
<!ATTLIST
商品
@H_403_13@
类别 CDATA #required
@H_403_13@
颜色 CDATA #IMPLIED >
@H_403_13@
@H_403_13@
属性约束的四种形式:
* #required:必须填写
* #IMPLIED:可选
* #FIXED value:固定值
* defaultValue:默认值,如果实例中没有包含该属性,则用默认值,如果有包含并且重新赋值,则用重新赋的值
例如:
属性约束的四种形式:
* #required:必须填写
* #IMPLIED:可选
* #FIXED value:固定值
* defaultValue:默认值,如果实例中没有包含该属性,则用默认值,如果有包含并且重新赋值,则用重新赋的值
例如:
实体(ENTITY):
实体是变量,用于引用普通文本或特殊字符的快捷方式的变量。
@H_403_13@
实体分类:
* 内部实体:
a .引用实体
b. 参数实体
* 外部实体
@H_403_13@
内部实体——引用实体:
* 内部实体:
a .引用实体
b. 参数实体
* 外部实体
@H_403_13@
内部实体——引用实体:
引用实体主要在 XML 文档中被应用
@H_403_13@
语法格式:<!ENTITY 实体名称 “实体内容” >
@H_403_13@
引用方式:&实体名称;
@H_403_13@
举例:
@H_403_13@
<!ENTITY copyright “I am a programmer">
@H_403_13@
……
@H_403_13@
©right;
实例:
@H_403_13@ @H_403_13@
@H_403_13@ @H_403_13@
内部实体——参数实体:
实例:
@H_403_13@ @H_403_13@
@H_403_13@ @H_403_13@
内部实体——参数实体:
参数实体被 DTD 文件自身使用
@H_403_13@
语法格式:<!ENTITY % 实体名称 "实体内容" >
@H_403_13@
引用方式:%实体名称;
@H_403_13@
举例:
@H_403_13@
<!ENTITY %TAG_NAMES "姓名 | EMAIL | 电话 | 地址">
@H_403_13@