XML约束
在XML技术里,我们可以编写一个文档约束一个XML文档的书写规范
常用的XML约束
XML DTD
XML Schema
XML DTD:Document Type Definition 文档类型定义
实例如下:
book.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "checkbook.dtd">
<书架>
<书>
<书名>JAVA思想</书名>
<作者>aa</作者>
<价格>32.2</价格>
</书>
<书>
<书名>JSP</书名>
<作者>bb</作者>
<价格>12.3</价格>
</书>
</书架>
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
此两处代码也可放置同一文件里。跟html和css一样。如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架[
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
]>
<书架>
<书>
<书名>JAVA思想</书名>
<作者>aa</作者>
<价格>32.2</价格>
</书>
<书>
<书名>JSP</书名>
<作者>bb</作者>
<价格>12.3</价格>
</书>
</书架>
XML中DTD的引用分为两种:
一种引用本地的DTD文档
<!DOCTYPE 文档根结点 SYSTEM "文件名称">
另一种是引用公共的文件
<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
元素定义
<!ELEMENT 元素名称 元素类型>
元素类型:可以是元素内容,或类型。如:
<!ELEMENT 书架(书+)>
<!ELEMENT 书名(PCDATA)>
元素类型如下几种:EMPTY:用于定义空元素,如<br/> <hr/>,ANY:元素内容为任意值
元素内容用逗号分隔,表示内容的出现顺序必须与声明时一致
<!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>
元素内容用 | 分隔,表示任选其一。多个中选择一个
<!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>
也可以用*,?,+来表示元素出现的次数
+:一次或多次,?:0次或一次,* :0次或多次,如果没有任何附号则表示必须要出现一次
()批量设置,如下:
<!ELEMENT MYFILE((TITILE*,AUTHOR?,EMAIL)*|COMMENT)>
属性定义 attribute
通过ATTLIST为其设置属性
语法格式:
<!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名 属性值类型 设置说明
............
>
设置说明:
#REQUIRED:必须设置该属性
#IMPLIBD:可以设置也可以不设置
#FIXED:固定为一个值
默认值:可以设置也可不设置,不设置则为默认值
如下:
<!ATTLIST 页面作者
姓名 CDATA #IMPLIBD
年龄 CDATA #IMPLIBD
联系方式 CDATA #REQUIRED
网站职务 CDATA #FIXED "页面作者"
个人兴趣 CDATA "上网"
>
CDATA:字符串
ENUMERATED:枚举
ID:唯一值,只能以字母,下划线开始。建议:以后开发中ID要以字母开头
ENTITY:实体,用于为一段内容创建一个别名,以后在XML文档中就可以用别名来使用。
实体分为两种:引用实例,参数实体
引用实体:用于给XML用
语法格式:<!ENTITY 实体名称 “实体内容”>
引用方式:&实体名称;
参数实体:被DTD文件自身使用
语法格式
<!ENTITY % 实体名称 "实体内容">
引用方式:%实体名称;