XML基础(二)

来源:互联网 发布:百度推广调价软件 编辑:程序博客网 时间:2024/05/02 05:06

有关XML的定义和语法规则的东东在这里http://blog.csdn.net/moreevan/article/details/6676112,在这篇文章里我们将来看一下namespace(命名空间)和xml schema(模式)的知识。这次的内容都摘自于http://www.w3school.com.cn,因为加了.cn,所以我们这次的内容 也就直接 是用中文来表达 的了,看起来也省不少劲了,吼吼。。



命名空间

XML 命名空间提供避免元素命名冲突的方法。其实就通过在元素名称前面 加不同的前缀来避免冲突的,这个就像C++中的namespace一样。

在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。这里的意思 应该是当两个文档被一起使用的时候。

XML Namespace (xmlns) 属性

XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:

xmlns:namespace-prefix="namespaceURI"

当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。

 

默认的命名空间(Default Namespaces)

为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。

请使用下面的语法:

xmlns="namespaceURI"

下面通过一个例子来看一下 

<?xml version="1.0" encoding="UTF-8"?><users xmlns="com.kevin.default" xmlns:kevin="com.kevin.user"><user id="001"><name>Kevin1</name></user><kevin:user id="002"><kevin:name>Kevin2</kevin:name></kevin:user><user id="003"><name>Kevin3</name></user></users>


在这个例子中我们定义了一个默认的命名空间,com.kevin.default,第一个和第三个User将关联到此命名空间,而第二个User将关联到我们定义 的另一个命名空间kevin


XML Schema

l   XML Schema 是基于 XML 的 DTD 替代者。

l   XML Schema 描述 XML 文档的结构。

l   XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。

 

什么是 XML Schema?

XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。

XML Schema:

  • 定义可出现在文档中的元素
  • 定义可出现在文档中的属性
  • 定义哪个元素是子元素
  • 定义子元素的次序
  • 定义子元素的数目
  • 定义元素是否为空,或者是否可包含文本
  • 定义元素和属性的数据类型
  • 定义元素和属性的默认值以及固定值

XML Schema 是 DTD 的继任者——具有的优势

我们认为 XML Schema 很快会在大部分网络应用程序中取代 DTD。

理由如下:

  • XML Schema 可针对未来的需求进行扩展
  • XML Schema 更完善,功能更强大
  • XML Schema 基于 XML 编写
  • XML Schema 支持数据类型
  • XML Schema 支持命名空间

下面这个例子是一个名为 "note.xsd" 的 XML Schema 文件

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


note 元素是一个复合类型,因为它包含其他的子元素。其他元素 (to, from, heading, body) 是简易类型,因为它们没有包含其他元素。您将在下面的章节学习更多有关复合类型和简易类型的知识。

下面我们对上面 的代码进行一个简单的解释:

xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

显示 schema 中用到的元素和数据类型来自命名空间"http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间"http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs:

<schema> 元素是每一个 XML Schema 的根元素,<schema> 元素可包含属性。一个 schema 声明往往看上去类似这样:

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

 

mlns: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 的引用

此文件包含对 XML Schema 的引用:

<?xml version="1.0"?><notexmlns="http://www.w3school.com.cn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3school.com.cn note.xsd"><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>   

上面的代码中
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
定义了可用的 XML Schema 实例命名空间
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"
定义了XML Schema的位置


关于Schema的知识我们知道 这些其实平时做Android开发或都java web开发我觉得也差不多了,因为到现在我做为一个菜鸟还没有自己写过Schema。。

 

更多内容请猛击http://www.w3school.com.cn

 

(END)



原创粉丝点击