XSD:XML结构定义(XML Schemas Definition )
XML Schema描述了XML文档的结构。
文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。
XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。
一个XML Schema会定义:文档中出现的元素、属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。
XML Schema是DTD的替代品。
原因:一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。
优点:
1) XML Schema基于XML,没有专门的语法
2) XML Schema可以象其他XML文件一样解析和处理
3) XML Schema支持一系列的数据类型(int、float、Boolean、date等)
4) XML Schema提供可扩充的数据模型。
5) XML Schema支持综合命名空间
6) XML Schema支持属性组。
<schema> 元素是每一个 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:schema>
<?xml version="1.0"?>
是所有 XML 文档中都必须有的 XML 声明,用途是告诉 XML 解析器文档所遵从的 XML 规范的版本和使用字符集。目前 XML 规范的最高版本就是 1.0。除了 ISO-8859-1 外(缺省字符集,可以不写),我们做开发时最常用的两个字符集是 GBK 和 UTF-8。
包含在 <? ... ?> 中的内容叫做处理指令(Processing Instruction,PI),处理指令不是 XML 的一部分,它的作用是为 XML 应用程序处理 XML 提供一些指示。注意,刚才说的 XML 声明虽然与处理指令很像,但并不是处理指令。
xs:schema节点中的xmlns:xs指出:schema中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs。
targetNamespace指出:被此 schema 定义的元素来自命名空间: "http://www.w3school.com.cn
xmlns指出:默认的命名空间是 "http://www.w3school.com.cn"。
elementFormDefault指出:任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定
在 XML 文档中引用 Schema
<?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>
xmlns:规定了默认命名空间的声明。此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素都被声明于 "http://www.w3school.com.cn" 这个命名空间
xmlns:xsi:声明XML Schema实例名称空间(http://www.w3.org/2001/XMLSchema-instance),并将xsi前缀与该名称空间绑定,这样模式处理器就可以识别xsi:schemaLocation属性。XML Schema实例名称空间的前缀通常使用xsi。
xsi:schemaLocation:使用xsi:schemaLocation属性指定名称空间http://www.w3school.com.cn和模式位置http://www.w3school.com.cn note.xsd相关。