XSD/XML普及知识

XSD/XML普及知识总结

=================

XSD (xml Schema Definition)
Xml Schema的用途


1.  定义一个Xml文档中都有什么元素


2.  定义一个Xml文档中都会有什么属性


3.  定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序


4.  定义元素或者属性的数据类型


5.  定义元素或者属性的默认值或者固定值


XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 描述 XML 文档的结构。
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。


XML 文档可对 DTD 或 XML Schema 进行引用。
一个简单的 XML 文档:
请看这个名为 "note.xml" 的 XML 文档:
<?xml version="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
DTD 文件
下面这个例子是名为 "note.dtd" 的 DTD 文件,它对上面那个 XML 文档的元素进行了定义:
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
第 1 行定义 note 元素有四个子元素:"to, from, heading, body"。
第 2-5 行定义了 to, from, heading, body 元素的类型是 "#PCDATA"。
XML Schema
下面这个例子是一个名为 "note.xsd" 的 XML Schema 文件,它定义了上面那个 XML 文档的元素:
<?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) 是简易类型,因为它们没有包含其他元素。您将在下面的章节学习更多有关复合类型和简易类型的知识。
对 DTD 的引用
此文件包含对 DTD 的引用:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
对 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">


<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>


<schema> 元素是每一个 XML Schema 的根元素。
<schema> 元素
<schema> 元素是每一个 XML Schema 的根元素:
<?xml version="1.0"?>


<xs:schema>


...
...


</xs: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>
代码解释:
下面的片断:
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
此 XML 文档含有对 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">


<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
代码解释:
下面的片断:
xmlns="http://www.w3school.com.cn" 
规定了默认命名空间的声明。此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素都被声明于 "http://www.w3school.com.cn" 这个命名空间。
一旦您拥有了可用的 XML Schema 实例命名空间:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
您就可以使用 schemaLocation 属性了。此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置:
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"


XSD 元素
元素 解释
all 规定子元素能够以任意顺序出现,每个子元素可出现零次或一次。
annotation annotation 元素是一个顶层元素,规定 schema 的注释。
any 使创作者可以通过未被 schema 规定的元素来扩展 XML 文档。
anyAttribute 使创作者可以通过未被 schema 规定的属性来扩展 XML 文档。
appInfo 规定 annotation 元素中应用程序要使用的信息。
attribute 定义一个属性。
attributeGroup 定义在复杂类型定义中使用的属性组。
choice 仅允许在 <choice> 声明中包含一个元素出现在包含元素中。
complexContent 定义对复杂类型(包含混合内容或仅包含元素)的扩展或限制。
complexType 定义复杂类型。
documentation 定义 schema 中的文本注释。
element 定义元素。
extension 扩展已有的 simpleType 或 complexType 元素。
field 规定 XPath 表达式,该表达式规定用于定义标识约束的值。
group 定义在复杂类型定义中使用的元素组。
import 向一个文档添加带有不同目标命名空间的多个 schema。
include 向一个文档添加带有相同目标命名空间的多个 schema。
key 指定属性或元素值(或一组值)必须是指定范围内的键。
keyref 规定属性或元素值(或一组值)对应指定的 key 或 unique 元素的值。
list 把简单类型定义为指定数据类型的值的一个列表。
notation 描述 XML 文档中非 XML 数据的格式。
redefine 重新定义从外部架构文件中获取的简单和复杂类型、组和属性组。
restriction 定义对 simpleType、simpleContent 或 complexContent 的约束。
schema 定义 schema 的根元素。
selector 指定 XPath 表达式,该表达式为标识约束选择一组元素。
sequence 要求子元素必须按顺序出现。每个子元素可出现 0 到任意次数。
simpleContent 包含对 complexType 元素的扩展或限制且不包含任何元素。
simpleType 定义一个简单类型,规定约束以及关于属性或仅含文本的元素的值的信息。
union 定义多个 simpleType 定义的集合。
unique 指定属性或元素值(或者属性或元素值的组合)在指定范围内必须是唯一的。
XSD Restrictions/Facets for Datatypes
参阅 XSD 限定 / Facets
限定 描述
enumeration 定义可接受值的一个列表
fractionDigits 定义所允许的最大的小数位数。必须大于等于0。
length 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。
maxExclusive 定义数值的上限。所允许的值必须小于此值。
maxInclusive 定义数值的上限。所允许的值必须小于或等于此值。
maxLength 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。
minExclusive 定义数值的下限。所允许的值必需大于此值。
minInclusive 定义数值的下限。所允许的值必需大于或等于此值。
minLength 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。
pattern 定义可接受的字符的精确序列。
totalDigits 定义所允许的阿拉伯数字的精确位数。必须大于0。
whiteSpace 定义空白字符(换行、回车、空格以及制表符)的处理方式。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值