首页 > 代码库 > 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
<?

xml version="1.0"?>

<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
<?

xml version="1.0"?>

<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)——基础总览