XML學習筆記(四)Schema介紹篇

2022-03-01 06:04:41 字數 2876 閱讀 6950

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...