XML约束

什么是约束?
用于规定xml中可以出现那些元素及那些属性,以及他们出现的顺序.

约束的分类:
DTD约束:例如struts hiebernate的配置文件
SCHEMA约束:例如tomcat spring的配置文件

DTD约束的关联方式:
方式1:内部关联
格式:<!DOCTYPE 根元素名 [dtd语法]>

方式2:外部关联-系统关联
格式:<!DOCTYPE 根元素名 SYSTEM "约束文件的位置">
例如:<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">

方式3:外部关联-公共关联
格式:<!DOCTYPE 根元素名 PUBLIC "约束文件的名称" "约束文件的位置">
例如:<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

DTD约束语法:
1.元素:
        格式:
                 <!Element 元素名称 数据类型|包含内容>
数据类型:
#PCDATA:普通文本 使用的时候一般用()引起来
包含内容:
该元素下可以出现那些元素 用()引起来
符号:
* 出现任意次
? 出现1次或者0次
+ 出现至少1次
| 或者
()      分组
, 顺序,逗号后面的不能出现在逗号前面
2.属性:
格式:
<!ATTLIST 元素名 属性名 属性类型 属性是否必须出现>
属性类型:
ID:唯一
CDATA:普通文本
属性是否必须出现
REQUIRED:必须出现
IMPLIED:可以不出现

看个例子:
mchenys.dtd文件

<?xml version="1.0" encoding="UTF-8"?>
<!--
	引入格式如下:
	<!DOCTYPE web-app SYSTEM "mchenys.dtd">
	注意:如果mchenys.dtd文件和关联的xml文件需要在同一目录下,否则需要修改路径
	例如:
	<!DOCTYPE web-app SYSTEM "../test1/mchenys.dtd">
-->
<!--标签约束-->
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-mapping (servlet-name,url-pattern) >
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>

<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>

<!--属性约束-->
<!ATTLIST web-app version CDATA #IMPLIED>
语法
语法杨含义解释下
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
web-app 包括3个标签,且必须顺序出现。
servlet子标签个数任意
servlet-mapping 子标签个数任意
welcome-file-list 子标签最多只能出现一次
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
servlet 有3个子标签,且必须顺序出现
servlet-name,必须有,且只能出现一次
description,可选一次
servlet-class 和 jsp-file 二选一,且只能出现一次
<!ELEMENT servlet-name (#PCDATA)>
servlet-name 的标签体必须是文本
<!ELEMENT welcome-file-list (welcome-file+)>
welcome-file-list 至少有一个子标签welcome-file

关联dtd文件

SCHEMA约束:
Schema 是新的 XML 文档约束;
Schema 要比 DTD 强大很多,是 DTD 替代者;
Schema 本身也是 XML 文档,但 Schema 文档的扩展名为 xsd ,而不是 xml
Schema 功能更强大,数据类型更完善
Schema 支持名称空间

一个xml文档中可以添加多个schema约束

xml和schema的关联.
格式:
<根标签 xmlns="..." ...>
<根标签 xmlns:别名="..." ...>
一个xml文件中不起别名的schema只能出现一个.

名称空间:
关联约束文件
规定元素是来源于那个约束文件的

关联schema文件


猜你喜欢

转载自blog.csdn.net/mchenys/article/details/80534780