XML语言学习6--Schema的学习

XML Schema也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了 克服 DTD 的局限性。   DTD对于内容约束只是字符串,而不能具体到数字。

XML Schema VS DTD:

  1. XML Schema符合XML语法结构。(相当于用一个XML文档去约束XML,但扩展名是xsd不是xml)
  2. DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
  3. XML Schema对名称空间支持得非常好。
  4. XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。 
  5. XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
  6. XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。  

 一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档

和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为Schema。

编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

模式文档示例:

<?xml version="1.0" encoding="UTF-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"					
					  targetNamespace="http://www. itcast.cn"	//约束本文档的名称空间
					  elementFormDefault="qualified">		//绑定所有元素,只绑定根节点
	<xs:element name='书架' >
		<xs:complexType>
			<xs:sequence maxOccurs='unbounded' >
				<xs:element name='书' >
					<xs:complexType>
						<xs:sequence>
							<xs:element name='书名' type='xs:string' />
							<xs:element name='作者' type='xs:string' />
							<xs:element name='售价' type='xs:string' />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

不写xs的格式如下:

<?xml version="1.0" encoding="UTF-8" ?> 
< schema xmlns="http://www.w3.org/2001/XMLSchema"					
					  targetNamespace="http://www. itcast.cn"	//约束本文档的名称空间
					  elementFormDefault="qualified">		//绑定所有元素,只绑定根节点
	< element name='书架' >
		< complexType>
			< sequence maxOccurs='unbounded' >
				< element name='书' >
					< complexType>
						< sequence>
							< element name='书名' type=' string' />
							< element name='作者' type=' string' />
							< element name='售价' type=' string' />
						</ sequence>
					</ complexType>
				</ element>
			</ sequence>
		</ complexType>
	</ element>
</ schema>



实例文档示例:

<?xml version="1.0" encoding="UTF-8"?>

<itcast:书架 xmlns:itcast="http://www.itcast.cn"						//1、说明名称空间
				xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"		//3、说明
				xsi:schemaLocation=“http://www.itcast.cn book.xsd">		//2、名称空间具体位置

	<itcast:书>
		<itcast:书名>JavaScript网页开发</itcast:书名>
		<itcast:作者>张孝祥</itcast:作者>
		<itcast:售价>28.00元</itcast:售价>
	</itcast:书>
</itcast:书架>


Schema语法:

1、简单元素:

定义简明元素的语法为:
<xs:element name="xxx" type="yyy"/> 
在这里, xxx是元素名称,yyy是元素的数据类型


XML Schema本身有很多数据种类。最常见的种类有: 
xs:string        字符 
xs:decimal       小数 
xs:integer 	 整数 
xs:boolean       逻辑值 
xs:date          日期 
xs:time          时间 



简单元素的默认值与固定值:

值没有被指定时,属性自动会设置成默认值

下面例子里默认值是"red":

<xs:element name="color" type="xs:string" default="red"/> 

固定值是也是自动分派给属性的,并且,一旦有了固定值,你就不能指定其他值了。

下面例子里固定值是"red":

<xs:element name="color" type="xs:string" fixed="red"/> 



2、属性:

类似于简单元素部分:

<xs:attribute name="lang" type="xs:string"/>
默认时属性是任意的,要指明属性是必需的,须用到"use"属性

<xs:attribute name="lang" type="xs:string" use="required"/> 


3、XSD限定/Facets:


4、XSD指示器:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值