微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML的约束:schema

1. schema约束:

1.1*schema和DTD的对比(面试题):

1.schema符合XML的语法结构。
2.可以解析schema文档。
3.schema对名称空间支持的好。
4.schem支持更多的数据类型,自定义的数据类型。
1.2* 预先定义元素和属性
1.3 * schema的后缀名是.xsd
1.4* 只能有一个根节点,名称是schema。

2.开发步骤

2.1开发schema的约束文档

1* 引入W3C的名称

* 在根节点上,使用属性xmlns(xml namespace)

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

2* 定义元素

* <element name="书架"></element>

3* 判断是否是复杂还是简单的元素

* 如果是简单 在element有属性 type="数据的类型"
* 如果是复杂
1.* 先声明标签是复杂的元素 <complexType>
2.* 子元素之间的关系 <sequence>

4* 起名:targetNamespace 目标名称空间(起名)

值是任意的:http://www.itcast.cn/1110

5* elementFormDefault :

* qualified(使用) :质量好的

* unqualified :质量不好的

2.2在XML文档中引入自己编写的schema文档

1.* 引入W3C名称空间,我是实例文档。

* xmlns="http://www.w3.org/2001/XMLSchema-instance"

2* 引入自己编写的schema的文档

* xmlns="http://www.itcast.cn/1110"

3.* 问题:元素上不能有相同的属性名称

1)* 解决:起别名 :aa
2)* 技巧:在下面出现标签的概率小起别名

4* 引入自己编写的schema文档的地址

* schemaLocation属性是W3C提供的, 如果W3C名称空间要是有别名的话,先把别名写上。

xsi:schemaLocation="名称空间 schema文件的地址"

2.3 一个实例:

book.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itcast.cn/1110" elementFormDefault="qualified">

	<!-- 复杂元素 -->
	<element name="书架">
		<complexType>
			<sequence>
				<element name="书">
					<!-- 复杂的元素标志标签 -->
					<complexType>
						<!-- 有顺序的 -->
						<sequence>
							<!-- 简单元素 -->
							<element name="书名" type="string"></element>
							<element name="作者" type="string"></element>
							<element name="售价" type="double"></element>
							<element name="简介" type="string"></element>
						</sequence>
					</complexType>
				</element>
			</sequence>
		</complexType>
	</element>
</schema>

book.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns="http://www.itcast.cn/1110"
		xsi:schemaLocation="http://www.itcast.cn/1110 book.xsd">
	<书>
		<书名>java-web开发大全</书名>
		<作者>班长</作者>
		<售价>99.8</售价>
		<简介>这是不错啊</简介>
	</书>
</书架>

2.4总结:


3.名称间的概念

* 编写完schema文档,起唯一的名称空间。

* 在编写XML文档,通过xmlns来引入名称空间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。