schema约束 后缀名 .xsd
schema约束的出现是为了克服dtd约束的局限性
dtd的约束:
1.只能引入一个dtd文件
2.dtd支持的数据类型比较少(只有字符串)(schema支持更多的数据类型)
3.DTD语法<!ELEMENT> 解析比较困难
schema约束和DTD约束的对比
1.schema约束符合XML语法结构
2.schema很容易被DOM,SAX解析技术解析
3.schema对名称空间支持的非常好
4.schema支持更多的数据类型,支持自定义数据类型
常用的数据类型是(查w3c文档) xs:string xs:decimal xs:integer xs:boolean xs:date xs:time
schema使用预先定义好的元素和属性,由W3C组织规定
schema约束文档的后缀名是 .xsd
schema约束文档也只有一个根节点,并且根节点名称就是<schema></schema> 不能改
开发思路:
1.W3C组织预先定义
2.schema约束,先引入W3C名称空间,再根节点上使用xmlns="http://www.w3.org/2001/XMLSchema"
3.xml文档,先引入schema名称空间,引入W3C的名称空间,来声明“我是一个实例文档”
开发步骤:
1.引入W3C的名称空间(值不用记)在根节点上使用xmlns属性
2.定义元素标签<element name="元素名称" type="元素类型">
3.元素类型分类:
简单类型:<element name="" type="">
复杂类型:1.声明是复杂的类型 <complexType>
2.概述子节点的关系 <sequences>
4.调整顺序(把子节点放进父节点中)
5.定义属性 <attribute name="属性名称"
6.起一个名称空间的名称
再<schema>根节点上使用属性targetNamespace,值是唯一的,URI起名称
7.设置质量好的 qualified质量好的 unqualified质量不好的
8.xml文件中:。1引入w3c的名称空间(声明文档是实例文档) xmlns="W3C的"
。2引入自己定义schema文档的名称空间 xmlns="自己的"
。3元素名称上有了相同名称的属性,需要起别名,把标签出现次数少的起别名,因为起别名后,所有的标签需要写为 别名:标签名
。4引入自己定义schema文档的地址
schema约束文档
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入W3C
定义自己的名称空间
质量好的 -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/company"
elementFormDefault="qualified">
<!-- 公司元素 -->
<element name="company">
<!-- 声明是复杂类型 -->
<complexType>
<!-- 子节点的关系 -->
<sequence>
<!-- 员工元素 -->
<element name="employee">
<complexType>
<sequence>
<!-- 员工名字 -->
<element name="name">
<complexType>
<simpleContent>
<extension base="string"></extension>
</simpleContent>
</complexType>
</element>
</sequence>
<!-- 为员工元素添加属性 -->
<attribute name="age" type="int"></attribute>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
xml文档
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入W3C名称空间
引入schema约束文档名称空间
schema约束文档的地址 -->
<company xmlns:xsi = "http://www.w3.org/2001/XMLSchema"
xmlns = "http://www.example.org/company"
xsi:schemaLocation="http://www.example.org/company company.xsd">
<employee age="30">
<name>xiao</name>
</employee>
</company>