Schema知识点(部分)

1、介绍
(1)XML Schema 是基于XML的DTD替代者
(2)XML Schema 描述XML 文档的机构
(3)XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)
DTD的缺点:
□ DTD 约束 xml 的时候,不能对 xml 中的数据类型做详细限定。
□ DTD 约束有自己的语法,书写时必须遵循 DTD 的语法。
□ 一个 xml 文件中只能引入一个 DTD 约束,而无法通过多个 DTD 文件来约束同一个xml文件。
Schema约束:
□ 对DTD那些缺点进行补充 。Schema文件它本身就是一个xml文件。书写的时候,它遵循xml的语法规则。
□ 在书写Schema的时候,就和书写xml文件一样。
□ 书写xml文件的时候,它的文件扩展名是xsd
□ Schema他可以限制属性和文本的数据类型
□ 子标签的顺序
□ 一个xml文夹可以引入N个Schema进行约束
2、Schema文件书写
(1)book.xsd:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<schema xmlns:xs="http://www.w3.org/2001/XMLSchema"    //引入外部Schema约束
	targetNamespace="http://www.example.org/book"    //命名空间(唯一标识):供其他文件“xmlns”引入
	xmlns;tns="http://www.example.org/book"
	elementFormDefault="qualified">
	<!--
		在Schema文件中使用element标签来定义book.xml中可以书写的标签名
	-->
	<element name="books">
		<!--
		1、books中的子标签,需要在Schema中定义的books的标签内部嵌入element来定义。
		2、简单标签:这个标签没有子标签,也没有属性。
		3、复杂标签:这个标签拥有子标签或者属性。
		4、在element标签中使用complexType来声明当前element定义的标签为一个复杂标签
		-->
		<complexType>
			<!-- 在complexType使用sequence定义子标签之间的顺序 -->
			<sequence>
				<element name="book">
					<complexType>
						<sequence>
							<!-- type:可以指定该标签的数据类型(即为简单标签) -->
							<element name="name" type="string">
								<!-- simpleType指定此标签为简单标签(指定了element的type属性就不在需要此标签了) -->
								<simpleType></simpleType>
							</elemenet>		
							<element name="author" type="string"></elemenet>	
							<element name="price" type="double"></elemenet>	
						</sequence>
					</complexType>
				</elemenet>			
			</sequence>
		</complexType>
	</element>
</xs:schema>

(2)在book.xml文件中引用book.xsd:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<books>
	<book 
		xmlns="http://www.example.org/book"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    //表名该文件是一个http://www.w3.org/2001/XMLSchema的实例,不是schema约束文件
		xis:schemaLocation="http://www.example.org/book book.xsd">
		<name>童话</name>
		<author>安徒生</author>
		<price>69.9</price>
	</book>
</books>

3、Schema文件和xml文件引用关系
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值