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 支持命名空间

一个简单例子:

? @H_301_75@
1 @H_301_75@
2 @H_301_75@
3 @H_301_75@
4 @H_301_75@
5 @H_301_75@
6 @H_301_75@
7 @H_301_75@
<? xml version = "1.0" ?> @H_301_75@
< note > @H_301_75@
< to >George</ to > @H_301_75@
< from >John</ from > @H_301_75@
< heading >Reminder</ heading > @H_301_75@
< body >Don't forget the meeting!</ body > @H_301_75@
</ note > @H_301_75@ @H_301_75@
@H_301_75@ @H_301_75@

它对应的note.xsd的Schema文件如下:

? @H_301_75@
1 @H_301_75@
2 @H_301_75@
3 @H_301_75@
4 @H_301_75@
5 @H_301_75@
6 @H_301_75@
7 @H_301_75@
8 @H_301_75@
9 @H_301_75@
10 @H_301_75@
11 @H_301_75@
12 @H_301_75@
13 @H_301_75@
14 @H_301_75@
15 @H_301_75@
16 @H_301_75@
17 @H_301_75@
18 @H_301_75@
<? xml version = "1.0" ?> @H_301_75@
< xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema" @H_301_75@
targetNamespace = "http://www.w3school.com.cn" @H_301_75@
xmlns = "http://www.w3school.com.cn" @H_301_75@
elementFormDefault = "qualified" > @H_301_75@
@H_301_75@
< xs:element name = "note" > @H_301_75@
< xs:complexType > @H_301_75@
< xs:sequence > @H_301_75@
< xs:element name = "to" type = "xs:string" /> @H_301_75@
< xs:element name = "from" type = "xs:string" /> @H_301_75@
< xs:element name = "heading" type = "xs:string" /> @H_301_75@
< xs:element name = "body" type = "xs:string" /> @H_301_75@
</ xs:sequence > @H_301_75@
</ xs:complexType > @H_301_75@
</ xs:element > @H_301_75@
@H_301_75@
</ xs:schema > @H_301_75@ @H_301_75@
@H_301_75@ @H_301_75@

可以看到,使用XML Schema有很多好处和优势,比如它不需要学习新的语言、可使用 XML 编辑器来编辑 Schema 文件、可使用 XML 解析器来解析 Schema 文件等。它还有更多的好处在后面介绍。

@H_301_75@

XML Schema支持对DTD的引用,以及对XML Schema本身的引用,参看下面两个例子:

对外部DTD的引用:

? @H_301_75@
1 @H_301_75@
2 @H_301_75@
3 @H_301_75@
4 @H_301_75@
5 @H_301_75@
<? xml version = "1.0" ?> @H_301_75@
<! DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd"> @H_301_75@
< note > @H_301_75@
... @H_301_75@
</ note > @H_301_75@ @H_301_75@
@H_301_75@ @H_301_75@

对外部XML Schema的引用:

? @H_301_75@
1 @H_301_75@
2 @H_301_75@
3 @H_301_75@
4 @H_301_75@
5 @H_301_75@
6 @H_301_75@
7 @H_301_75@
8 @H_301_75@
<? xml version = "1.0" ?> @H_301_75@
< note @H_301_75@
xmlns = "http://www.w3school.com.cn" @H_301_75@
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" @H_301_75@
xsi:schemaLocation = "http://www.w3school.com.cn note.xsd" > @H_301_75@
@H_301_75@
... @H_301_75@
</ note > @H_301_75@ @H_301_75@
@H_301_75@ @H_301_75@



<schema> 元素是每一个 XML Schema 的根元素。

即每一个XML Schema文件都是已<schema></schema>为头和尾的,这里面可以包含属性。一个 schema 声明往往看上去类似这样:

? @H_301_75@
1 @H_301_75@
2 @H_301_75@
3 @H_301_75@
4 @H_301_75@
5 @H_301_75@
6 @H_301_75@
7 @H_301_75@
8 @H_301_75@
9 @H_301_75@
10 @H_301_75@
<? xml version = "1.0" ?> @H_301_75@
@H_301_75@
< xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema" @H_301_75@
targetNamespace = "http://www.w3school.com.cn" @H_301_75@
xmlns = "http://www.w3school.com.cn" @H_301_75@
elementFormDefault = "qualified" > @H_301_75@
@H_301_75@
... @H_301_75@
... @H_301_75@
</ xs:schema > @H_301_75@ @H_301_75@
@H_301_75@ @H_301_75@

其中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相关文章