XML - Schema之基礎示例

襲冷發表於2014-06-30
一、說明
    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"


  

相關文章