preface:本文是w3schools上《schema指南》的學習筆記。其中大部分內容是對指南的翻譯總結。由於原文的例子更詳盡生動,如果各位想閱讀原文可以到這個**同時,w3schools提供了測試,大家可以測試一下自己的理解程度。
xml schema用於描述xml文件結構的檔案。另一種用於該用途的檔案(技術)是dtd。xml schema有時又稱為xml schema definition,所以也會稱為xsd。因此schema檔案是以xsd為字尾的。
下面詳細的說明一下所謂的「定義xml文件結構結構」的意義。
因為有了以上的定義,我們才能更清晰的使用xml描述我們要表達的內容。使xml的接受方能更容易明白內容的含義。
schema和dtd的比較:
可以說schema是dtd的替代品,雖然作用一樣,但schema是比dtd更新,更好的一種技術,因為:
更重要的是schema是w3c推薦的標準。<?
xml version="1.0"
?>
<
note
xmlns
=""xmlns:xsi
=""xsi:schemalocation
=" note.xsd"
>
<
to>
tove
to>
<
from
>
jani
from
>
<
heading
>
reminder
heading
>
<
body
>
don't forget me this weekend!
body
>
note
>
以上的xml檔案引用了note.xsd的schema檔案進行結構定義,這樣parser會根據該schema檔案對xml進行有效性檢驗。顯然關鍵的地方是文件根元素「note」中屬性的定義。下面解析相關屬性的意義。
xmlns=""
說明文件的預設命名空間是「」。關於命名空間的作用,在xml學習筆記(三)中有介紹。
xmlns:xsi=""
這裡定義乙個schema的例項命名空間。只有作了這個定義才能使用schemalocation屬性。xsi是xml schema instance的意思。
xsi:schemalocation=" note.xsd"
如上所述,因為我們已經定義了xsi命名空間所以可以使用schemalocation屬性了。schemalocation屬性由成對的值組成可以有多對。(因為乙個xml文件可以有多個命名空間,所以schemalocation值可以有多對)第乙個值「」是要使用schema進行有效驗證的命名空間的元素。第二個值「note.xsd」是要使用的schema文件的路徑。
以下是中國xml論壇的兩篇貼子可以作為參考和補充:
首先給出乙個完整的schema文件
<?
xml version="1.0"
?>
<
xs:schema
xmlns:xs
=""targetnamespace
=""xmlns
=""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
>
首先必須強調的是元素是schema文件的根元素。注意大小寫,schema也是xml,xml是大小寫敏感的。element的所有子元素都是用於定義xml文件結構的。具體的語法在下篇介紹。在這裡我們集中關注的屬性。
xmlns:xs=""
這裡指明了乙個命名空間「」。同時定義了乙個字首「xs」。自己和所有子元素都使用「xs」字首,說明屬於該命名空間。
targetnamespace=""
targetnamespace是目標命名空間。這語句說明,這個schema定義的元素(note, to, from, heading, body)是來自「」這個命名空間的。從另乙個角度可以理解為,引用這個schema進行有效性驗證的xml的元素應該是使用該命名空間的。
xmlns=""
因為schema也是xml。這語句說明這個xml的預設命名空間是「」。
elementformdefault="qualified"
這句表示在本schema中定義的element,如果在xml例項文件出現的話,都要進行命名空間匹配。
同樣給出一篇中國xml論壇的帖子作為參考和補充:
author:jackma
Schema和xml命名空間理解筆記
schema xmlversion 1.0 xsd schema xmlns xsd targetnamespace xmlns elementformdefault qualified xsd element name note xsd complextype xsd sequence xsd e...
XML學習筆記(四) 修飾XML文件的CSS
標籤 空格分隔 學習筆記 xml為儲存結構化資料提供了強大的方法,但是它沒有提供關於資料如何顯示地資訊,資料的結構與資料表示無關 可以使用css來控制xml文件中各元素的呈現方式。又三部分構成 選擇器 selector 屬性 property 屬性值 value 基本語法個數如下 selector雖...
XML學習筆記
一 語法 1 使用標籤標記,可定議自己的標籤。二 合格的文件 1 該文件包含 乙個或多個元素。2 該文件只包含 乙個文件元素,用於包含其他元素。3 每個元素都應當正確的結束。如123456。如果開始和結束符之間沒有內容,則可以寫成 4 元素是區分大小寫的 5 屬性值總是用引號括起來,並且不能為空。6...