首页 > 代码库 > XML Schema学习札记(1)——基础总览
XML Schema学习札记(1)——基础总览
内容整理自:www.w3school.com.cn
转载自:http://www.xgezhang.com/xml_schema_1.html
什么是XML Schema?
- XML Schema 是基于 XML 的 DTD 替代者。
- XML Schema 可描写叙述 XML 文档的结构,并对其进行制约和校验。
- XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。
它能够:
- 定义可出如今文档中的元素
- 定义可出如今文档中的属性
- 定义哪个元素是子元素
- 定义子元素的次序
- 定义子元素的数目
- 定义元素是否为空,或者是否可包括文本
- 定义元素和属性的数据类型
- 定义元素和属性的默认值以及固定值
XML Schema 是 DTD 的继任者:
我们觉得 XML Schema 非常快会在大部分网络应用程序中代替 DTD,理由例如以下
- XML Schema 可针对未来的需求进行扩展
- XML Schema 更完好,功能更强大
- XML Schema 基于 XML 编写
- XML Schema 支持数据类型
- XML Schema 支持命名空间
一个简单样例:
1
2
3
4
5
6
7
|
<?
< note > < to >George</ to > < from >John</ from > < heading >Reminder</ heading > < body >Don‘t forget the meeting!</ body > </ note > |
它相应的note.xsd的Schema文件例如以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<? xml
version = "1.0" ?
< xs:schema
xmlns:xs = "http://www.w3.org/2001/XMLSchema" targetNamespace = "http://www.w3school.com.cn" xmlns = "http://www.w3school.com.cn" elementFormDefault = "qualified" > < xs:element
name = "note" > < xs:complexType > < xs:sequence > < xs:element
name = "to"
type = "xs:string" /> < xs:element
name = "from"
type = "xs:string" /> < xs:element
name = "heading"
type = "xs:string" /> < xs:element
name = "body"
type = "xs:string" /> </ xs:sequence > </ xs:complexType > </ xs:element > </ xs:schema > |
能够看到。使用XML Schema有非常多优点和优势。比方它不须要学习新的语言、可使用 XML 编辑器来编辑 Schema 文件、可使用 XML 解析器来解析 Schema 文件等。
它还有很多其它的优点在后面介绍。
XML Schema支持对DTD的引用,以及对XML Schema本身的引用。參看以下两个样例:
对外部DTD的引用:
1
2
3
4
5
|
<? xml
version = "1.0" ?> <! DOCTYPE
note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd"> < note > ... </ note > |
对外部XML Schema的引用:
1
2
3
4
5
6
7
8
|
<?
< note xmlns = "http://www.w3school.com.cn" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.w3school.com.cn
note.xsd" > ... </ note > |
<schema> 元素是每个 XML Schema 的根元素。
即每个XML Schema文件都是已<schema></schema>为头和尾的,这里面能够包括属性。一个 schema 声明往往看上去类似这样:
1
2
3
4
5
6
7
8
9
10
|
<? xml
version = "1.0" ?> < xs:schema
xmlns:xs = "http://www.w3.org/2001/XMLSchema" targetNamespace = "http://www.w3school.com.cn" xmlns = "http://www.w3school.com.cn" elementFormDefault = "qualified" > ... ... </ xs:schema > |
当中xmlns:xs=”http://www.w3.org/2001/XMLSchema”显示 schema 中用到的元素和数据类型来自命名空间 “http://www.w3.org/2001/XMLSchema”。
同一时候它还规定了来自命名空间 “http://www.w3.org/2001/XMLSchema” 的元素和数据类型应该使用前缀 xs:
targetNamespace=”http://www.w3school.com.cn” 这个片段,表示被此 schema 定义的元素 (note, to, from, heading, body) 来自命名空间: “http://www.w3school.com.cn”。
xmlns=”http://www.w3school.com.cn” 这个片段表示默认的命名空间是”http://www.w3school.com.cn”。
elementFormDefault=”qualified” 这个片段表示随意XML实例文档使用并在Schema中声明过的元素必须被命名空间所限定。
XML Schema学习札记(1)——基础总览