趣味XML Schema入門

2021-04-14 00:02:10 字數 2912 閱讀 9282

趣味xml schema入門 (1)

(這是一種嘗試,不喜歡的朋友請多包涵,)

xml schema 是什麼?

乙個xml schema,或者叫xml模式,是對乙個(或一組)xml檔案的結構的說明,它也可以對其內容進行一些約束性和語義上的說明。

熟悉資料庫的人可以把xml schema看成是資料庫中資料模式在xml技術中的對應物。

為什麼要給xml檔案加個schema?

給乙個(或一組)xml檔案關聯乙個schema有不少好處,甚至可以說是必須的。沒有哪個程式或者人,可以以一種有意義的方式處理任意的xml檔案。每個程式都要假定它所要處理的xml檔案具有特定的結構和內容,當給它處理的檔案不是這種結構或內容時,它就處理不了。例如,把乙個svg檔案給沒有安裝svg外掛程式的瀏覽器,瀏覽器無法呈現這個svg所表示那幅圖畫。

反過來說,當我們想使用以xml檔案形式接收輸入的某個程式時,那我們就得按照這個程式所能接受的格式來準備xml檔案。我們不想把這個程式的源**拿來看,來分析它究竟要接受什麼樣的格式,我們希望這個程式提供乙個簡潔而嚴格的關於它所接受的輸入格式的說明書。這個說明書可以寫成電視機的使用說明書那樣,告訴我們怎麼用電視機。只有一點不好,萬一我們看了說明書之後,還是出了點什麼錯把電視機搞壞了,沒有人賠。假設我們是一家給別人準備資料的公司,如果我們看了客戶提供的資料格式說明,還是出了錯,那就要麼會挨罵,要麼失去乙個客戶,說不定還得付出賠償。所以問題在於,我們需要的不僅僅是資料格式的說明,還希望能在我們把資料呈交給客戶或者某個程式去處理之前就看看資料到底符合不符合這個格式。這說明,這個格式不能象電視機說明書那樣只能給人讀一讀,它得能被計算機處理,被計算機拿去檢驗資料的格式是不是有錯。

這樣一種能被計算機處理的關於xml檔案結構和內容的說明,就是乙個xml schema。所以,它的用處就在於提供乙個可以被計算機付諸檢驗的資料格式說明。而拿xml schema去檢驗xml檔案的程式叫做schema處理程式。所以,需要記住,不是乙個schema自己去驗證xml檔案,它只是規定xml檔案的格式,然後被拿去驗證xml檔案。

你可能要說,又不是schema可以檢驗資料,那為什麼不直接寫個程式去驗證資料,還搞個schema出來,這不是多此一舉嗎!得記住,我們是一家資料公司,我們有很多客戶,每個客戶的資料格式都不一樣。我們呢,只有5個人,而且只有乙個mm會寫程式,如果要她為每個客戶的資料格式都寫驗證程式,那她不睡覺也寫不完,而我們沒錢再多請幾個程式設計師,因為程式設計師對薪水的要求一般都很高。而其他四個人呢,常常沒事做,幫不上,正好偷懶。老闆很精明,他讓這個mm程式設計師寫乙個通用的資料驗證器,這個驗證器針對不同客戶的資料格式要求去檢驗他們各自的資料。mm說可以,但是得把每個客戶的資料格式告訴這個程式。程式終於寫出來了。這個時候其他四個人就幫得上忙了,就不能偷懶了。他們不用寫程式,他們只要寫資料格式說明就行了。

好了,我們不只五個人,我們有幾個mm程式設計師,她們願意加班加點的寫程式,就是不想寫個通用的驗證器。她們很聰明,知道那樣的話等於是自掘墳墓。問題是這個世界上又牛又傻的程式設計師做出來了那樣的通用程式。我們不用不行,不用我們的公司就會倒閉,因為我們驗證資料的成本比別人高得多。我們得用才能保住飯碗。倒也好,mm們現在不用加班加點了,輕輕鬆鬆寫schema。

xml schema是怎樣規定資料格式的

乙個xml schema把xml 中的資料項列出來,指明哪個在外面,哪個在裡面;哪個在前面,哪個在後面;哪些是一定得有的,哪些是可以沒有的;哪個有的時候,另外某乙個就一定得有,或者一定沒有;哪個得是正數,哪個不能大於1000,等等,等等,這樣的事。

我決定用schema了,怎麼寫啊?--- dtd與w3c xml schema

那些傻牛人已經發明了幾種用來說明xml檔案格式的辦法,其中聽得比較多的是dtd和(w3c)xml schema。w3c是world wide web consortium 的縮寫,因為有3個w開頭,就成了w3。這和「披頭四」有點象,beatles樂隊的音譯,而他們是四個人,也譯作「披頭四」。

dtd是document type definition的縮寫,即文件型別定義。它出現在(w3c)xml schema之前。之所以有這麼個奇怪的名字,是因為它本來就不是用來說明xml資料檔案格式的,它是用來說明xml文件格式的。搞什麼怪啊,xml資料檔案不就是xml文件嗎?不騙你,真的很有些不一樣!

如果我們寫一篇文章,敲到計算機裡面去,存下來,得到乙個文件,如果這個文件是xml格式的,那就是xml文件。你要說,別唬人了,有誰用xml做文件啊,地球人都用word。非也!有很多人用xml做文件,xml的前身就是專門用來做文件的,而dtd實際上是給那個前身用的,後來也給xml用。那個前身我們就不多說了,省得跑題。另外乙個例子,我們有很多人做網頁,網頁是什麼?文件,而且可以說是xml文件,因為html是xml的那個前身的乙個文件型別(或者說格式)而已。而xthml就更是xml文件了,真真正正的xml文件。

有dtd就好了,幹麼要弄幾個辦法來寫格式說明,這不是添亂嘛!當然不是。剛剛說了dtd不是用來說明資料格式的。如果把dtd拿來做資料格式說明並非完全不行,但是它有兩個不足的地方。它只能說明「哪個在外面,哪個在裡面;哪個在前面,哪個在後面;哪些是一定得有的,哪些是可以沒有的;哪個有的時候,另外某乙個就一定得有,或者一定沒有;」這樣結構方面的事情,不能說明「這個不能是負數,那個不能大於100,這個的名字得是英文的,那個的名字得是中文的」這些事情。用計算機術語來說,dtd沒有提供資料型別,或者說它只提供了一種資料型別,文字。所以它很自覺地把自己叫做文件型別定義,而不敢自稱為資料模式定義。另外乙個問題是資料型別問題的引申。我們現在都用物件導向的東西了,我們希望資料格式也是物件導向的。而dtd有點老派,它被發明的時候,物件導向還在實驗室裡。

xml把自己定位在通用資料交換技術這樣乙個地位,卻沒辦法準確定義資料格式,這很尷尬。所以w3c急忙忙要推出xml schema。xml從一出世就被大家追捧,而它那時其實還不象大家說的那麼好(可能現在也不是,但是它的確是個好東東,可以更好)。不能讓大家失望啊,趕緊彌補先天不足。就有了xml schema(和其他等等xml技術)。xml schema 解決了上面說的那兩個問題。對第乙個問題,它解決得很漂亮。而對第二個問題,還有爭議。爭議歸爭議,大家已經迫不及待地用開了。

xml schema約束入門(1)

book type xs string 三國演義 這樣就定義乙個xml schema 這裡的意思是 定義了乙個標籤為名字book 型別為string 型別其中elemet,name,type為固定格式,value是自己定義的部分。tyep的值xml schema 提供了一些基本的型別提供你們使用 s...

XML Schema 入門筆記 概述

xml schema 是基於 xml 的 dtd 替代者。了解dtd xml schema 描述 xml 文件的結構。xsd xml schema definition xml schema的作用 xml schema 最重要的能力之一就是對資料型別的支援。簡單的示例 把下面的note.xml文件轉...

XML Schema 入門筆記 簡單的型別

簡易元素指那些僅包含文字的元素。它不會包含任何其他的元素或屬性。它可以是 xml schema 定義中包括的型別中的一種 布林 字串 資料等等 或者它也可以是您自行定義的定製型別。這是一些 xml 元素 smith 281980 03 27這是相應的簡易元素定義 預設值是 red 固定值是 red ...