一、说明
Schema是W3C规范,用于描述xml文档的结构,后缀.xsd
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"