XML
是一种可扩展标记语言 标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言
DTD约束 (Document Type Definition) 文档类型定义
Schema约束
1 格式良好的xml文件的需求:
1.1 有且只有一个根元素(图中的 persons)
1.2 XML标签大小写正确区分
1.3 正确使用结束标签
1.4 正确嵌套标签
1.5 使用了合法的标签名(不能用非法的字符作为标签)
1.6 定义有效的属性
2. 在XML加入DTD声明
2.1 在XML加入DTD声明
2.2. 元素定义的语法
<!ELEMENT element-name (type)>2.3. 元素的分类
<!ELEMENT element-name EMPTY>//空元素 <!ELEMENT element-name (#PCDATA)>//文本元素 <!ELEMENT element-name (e1,e2)>//混合元素2.4. 元素的限制
, (表示必须都要有)
| (或者有一个)
次数: +, 1~n()
*, 0~n
?, 0或1(看有没有,有也只可以有一个)
默认有且只有一个
示意图:
注意:在加入声明的时候单词之间一定要隔开,不然会报错
3. 属性定义的语法
<!ATTLIST element-name att_name type>
效果图:
#REQUIRED(表示必须要有)
#IMPLIED(表示可有可无)
3. XML中的特殊符号
&(逻辑与) &(转译符)
<(小于) <
>(大于) >
"(双引号) "
'(单引号) '
4. 写config.xml的DTD约束
结果:
拓展:
Schema
schema是一种用于定义和描述XML文档结构与内容的模式语言,Schema的出现逐步取代了DTD,也很快被接受。
模式文档:就是一个schema文档,但它的扩展名通常为 .xsd。
实例文档:遵循schema文档写的xml文件
Schema的创建
一个有效的Schema文件的结构如此下:
<?xml version="1.0"encoding="UTF-8"?>
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Schema"
xmlns:tns="http://www.example.org/Schema"elementFormDefault="qualified">
<!--这里编写内容-->
< /xs:schema>
Schema文件的声明部分。
元素“xs:schema”是整个Schema文件的根元素。
“xmlns”、“elementFormDefault”和“attributeFormDefault”都是Schema文件的属性,对整个Schema文件进行描述。
文件属性
xmlns:xmlns是xhtml namespace的缩写,称为“命名空间” xmlns属性的值是一个URI或URL地址 xmlns属性不可缺少。
targetNamespace:该属性的值是在xmlns已经定义好的命名空间中选择。该属性可有可无。
elementFormDefault :用于指示子元素是否放到命名空间中,有“qualified”和“unqualified”两种取值。
attributeFormDefault :用于指示是否把某个子元素的属性放到命名空间中,有“qualified”和“unqualified”两种取值。
类型元素
简单的类型元素主要有:simpleType、element、attribute、enumeration、pattern、union、list 7种元素类型。
复杂的类型元素主要有: sequence、complexType、choice、simpleContent、extension、restriction、group、attributeGroup 8种类型元素。
名称空间
在Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间。名称空间用一个唯一的URI来表示。在XML文件中书写标签时,可以通过名称空间声明(xmlns),来声明当前编写的标签来自哪个Schema约束文档。
举一个简单的例子:
<itcast:书架xmlns:itcast="http://www.itcast.cn">
<itcast:书>........<itcast:/书>
</itcast:书架>
说明:此处使用itcast来声明指向名称。
使用名称空间引入Schema
为了在一个XML文档中声明遵循的Schema文件的具体位置,通常需要在XML文档中的根节点中使用schemaLocation属性来指定,
例如:
<itcast:书架 xmlns:itcast=http://www.itcast.cn
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://www.itcast.cn.book.xsd'>
schemaLocation此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的XMLschema的位置,两者之间用空格分隔。
itcast : 解释书架来自itcast,那么itcast来自哪里呢
itcast来自于: xmlns:itcast=”http://www.itcast.cn”
Schema的优点:
1、Schema符合XML语法结构。
2、DOM、SAX、等XML API很容易解析出XML Schema文档中的内容。
3、XML Schema对名称空间支持得非常好。
4、XNL Schema定义约束能力非常强大,可以对XML实例文档做出细致的语义限制。
5、Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。
6、可针对未来的需求进行扩展,与DTD相比,更加完善,功能更强大
编写一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URL地址上,在 Schema技术中有一个专业术语来描述这个过程,即把XML Schema 绑定到一个名称空间上,XML文件通过URI来解析引擎,xml文档中编写的元素来自哪里,被谁约束。