XSD詳解一 - 基本概念

XSD詳解一 - 基本概念

本分類下的文章主要是對W3School的文檔進行整理:http://www.w3school.com.cn/x.asp

 

XML Schema 是基於 XML 的 DTD 替代者。

XML Schema 描述 XML 文檔的結構。

XML Schema 語言也稱作 XML Schema 定義(XML Schema Definition,XSD)。

 

一、XML Schema 簡介

1、什麼是 XML Schema?

XML Schema 的作用是定義 XML 文檔的合法構建模塊,類似 DTD。

XML Schema:

  • 定義可出現在文檔中的元素
  • 定義可出現在文檔中的屬性
  • 定義哪個元素是子元素
  • 定義子元素的次序
  • 定義子元素的數目
  • 定義元素是否爲空,或者是否可包含文本
  • 定義元素和屬性的數據類型
  • 定義元素和屬性的默認值以及固定值

 

2、XML Schema 是 DTD 的繼任者

我們認爲 XML Schema 很快會在大部分網絡應用程序中取代 DTD。

理由如下:

  • XML Schema 可針對未來的需求進行擴展
  • XML Schema 更完善,功能更強大
  • XML Schema 基於 XML 編寫
  • XML Schema 支持數據類型
  • XML Schema 支持命名空間

 

3、XML Schema 是 W3C 標準

XML Schema 在 2001 年 5 月 2 日成爲 W3C 標準。

 

二、爲什麼要使用 XML Schema?

1、XML Schema 比 DTD 更強大 

2、XML Schema 支持數據類型

XML Schema 最重要的能力之一就是對數據類型的支持。

通過對數據類型的支持:

  • 可更容易地描述允許的文檔內容
  • 可更容易地驗證數據的正確性
  • 可更容易地與來自數據庫的數據一併工作
  • 可更容易地定義數據約束(data facets)
  • 可更容易地定義數據模型(或稱數據格式)
  • 可更容易地在不同的數據類型間轉換數據

編者注:數據約束,或稱 facets,是 XML Schema 原型中的一個術語,中文可譯爲“面”,用來約束數據類型的容許值。

 

3、XML Schema 使用 XML 語法

另一個關於 XML Schema 的重要特性是,它們由 XML 編寫。

由 XML 編寫 XML Schema 有很多好處:

  • 不必學習新的語言
  • 可使用 XML 編輯器來編輯 Schema 文件
  • 可使用 XML 解析器來解析 Schema 文件
  • 可通過 XML DOM 來處理 Schema
  • 可通過 XSLT 來轉換 Schema

 

4、XML Schema 可保護數據通信

當數據從發送方被髮送到接受方時,其要點是雙方應有關於內容的相同的“期望值”。

通過 XML Schema,發送方可以用一種接受方能夠明白的方式來描述數據。

一種數據,比如 "03-11-2004",在某些國家被解釋爲11月3日,而在另一些國家爲當作3月11日。

但是一個帶有數據類型的 XML 元素,比如:<date type="date">2004-03-11</date>,可確保對內容一致的理解,這是因爲 XML 的數據類型 "date" 要求的格式是 "YYYY-MM-DD"。

 

5、XML Schema 可擴展

XML Schema 是可擴展的,因爲它們由 XML 編寫。

通過可擴展的 Schema 定義,您可以:

  • 在其他 Schema 中重複使用您的 Schema
  • 創建由標準類型衍生而來的您自己的數據類型
  • 在相同的文檔中引用多重的 Schema

 

三、如何使用 XSD?

1、XML Schema及其引用

下面這個例子是一個名爲 "note.xsd" 的 XML Schema 文件:

複製代碼

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
    <xs:element name="to" type="xs:string"/>
    <xs:element name="from" type="xs:string"/>
    <xs:element name="heading" type="xs:string"/>
    <xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>

複製代碼

 note 元素是一個複合類型,因爲它包含其他的子元素。其他元素 (to, from, heading, body) 是簡易類型,因爲它們沒有包含其他元素。您將在下面的章節學習更多有關複合類型和簡易類型的知識。

 

以下文件包含對 XML Schema 的引用:

複製代碼

<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

複製代碼

 

2、<schema> 元素

<schema> 元素是每一個 XML Schema 的根元素:

複製代碼

<?xml version="1.0"?>

<xs:schema>

...
...

</xs:schema>

複製代碼

 <schema> 元素可包含屬性。一個 schema 聲明往往看上去類似這樣:

複製代碼

<?xml version="1.0"?>
 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">

...
...
</xs:schema> 

複製代碼

  • xmlns:xs:指當前xsd所要遵循的標籤規範,一般是http://www.w3.org/2001/XMLSchema
  • xmlns:一般值爲targetNamespace,作用是註明文件內引用類型時的命名空間,防止與其他xsd混淆
  • xmlns:?:引用其它命名空間,一般要與import同時使用,之後可以在文件內調用其它文件的類型
  • targetNamespace:當前xsd的命名空間,由作者自定義,供XML調用
  • elementFormDefault(qualified/unqualified):使用qualified即可,配置更清晰簡單
  • attributeFormDefault(qualified/unqualified)

 

 轉載請註明出處:http://www.cnblogs.com/cjh-notes/p/7986948.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章