XML - Schema之基础示例

一、说明
    Schema是W3C规范,用于描述xml文档的结构,后缀.xsd

    Schema具有:基于xml语法;拥有大量已定义的数据类型并可以自定义;支持元素的继承;支持属性组等特点


二、示例

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	xmlns="http://www.w3.org/2001/XMLSchema" :schema默认且必须有的命名空间,可以改为非默认(加前缀)但不能没有 
	targetNamespace="http://www.xilen.com/books" :当前schema的命名空间
	xmlns:tns="http://www.xilen.com/books" :引入的命名空间,这里表示引入当前这个schema,这里设置别名为tns
-->
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
	targetNamespace="http://www.xilen.com/books" xmlns:tns="http://www.xilen.com/books">
	
	<element name="books"> <!-- 根元素是一个Books -->
		<complexType> <!-- 这个Books元素是一个复杂类型的数据 -->
			<sequence minOccurs="0" maxOccurs="unbounded"> <!-- 这个Books的子元素是有序并可以多次出现的。这里定义了可以不限个数 -->
				<element name="book"> <!-- Books中的子元素是Book  -->
					<complexType> <!-- Book也是一个复杂类型的数据  -->
						<sequence> <!-- Book的子元素的定义,这里没有定义次数则默认一次且是有序的  -->
							<element name="name" type="string"/> <!-- Book的子元素name定义,基础类型数据 -->
							<element name="content" type="string"/> <!-- Book的子元素content定义,基础类型数据 -->
							<element name="price" type="float"/> <!-- Book的子元素price定义,基础类型数据 -->
							<element name="pubDate" type="date"/> <!-- Book的子元素pubDate定义,基础类型数据 -->
							<choice> <!-- Book的子元素定义,choice里面的元素只能选其一。这里说明要么是一个作者,要么是多个作者  -->
								<element name="author" type="string"/> <!-- Book的子元素author定义,基础类型 -->								
								<element name="authors"> <!-- Book的子元素authors定义  -->
									<complexType> <!-- authors元素也是一个复杂类型的数据(可理解为数组) -->
										<sequence minOccurs="2" maxOccurs="5"> <!-- authors的子元素是可以出现多次的(2~5个)  -->
											<element name="author" type="string"/> <!-- authors的子元素author的定义 -->
										</sequence>
									</complexType>
								</element>								
							</choice>
						</sequence>
						<attribute name="id" type="int" use="required"/> <!-- Book的属性定义。必须要在complexType内且在其最后  -->
					</complexType>
				</element>
			</sequence>
		</complexType>
	</element>
	
</schema>
三、引用
<?xml version="1.0" encoding="UTF-8"?>
<!--
	xmlns="http://www.xilen.com/books" : 声明当前xml默认使用的schema命名空间 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" : 引入其他schema的前提
	xsi:schemaLocation="http://www.xilen.com/books books.xsd" : 指定当前使用了的Schema的命名空间和路径
 -->
<books xmlns="http://www.xilen.com/books" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xilen.com/books books.xsd">
	
	<book id="1">
		<name>Java</name>
		<content>This book is about the development of Java</content>
		<price>50.50</price>
		<pubDate>2010-10-10</pubDate>
		<authors>
			<author>Joy</author>
			<author>Make</author>
		</authors>
	</book>
		
</books>

 四、 补充

        Eclipse中引入Schema可以通过文件路径和命名空间两种方式。

    1、文件路径方式

xsi:schemaLocation="http://www.xilen.com/books books.xsd"
    2、命名空间方式

        使用命名空间方式需要先在Eclipse中配置XML Catalog,配置方式如下图所示:

            

        然后命名空间方式引入如下所示:

xsi:schemaLocation="http://www.xilen.com/books http://www.xilen.com/books"


  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值