曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
模式有很多方面歸功于R D F、XML Data、D C D以及幾個其他的提議。當前的成就看起來正傾向
于簡單化,盡管它可能在后期很好地被擴展。由于這希望在這本書發行之后很快成為改進的
W 3 C建議書,我們將要深入研究一下草案。
7.6 W3C在XML 模式方面的工作
W3C XML 模式工作組在1 9 9 9年1 2月1 7日約定了兩部分關于XML 模式的工作草案。像任何
工作草案一樣,特別的屬性和語法受到后來的版本的影響。這些模式回答了我們在本章前面提
出的有關D T D的問題。它們用X M L語法寫成,允許使用多個命名空間,它提供強大的內容分類。
而且它們是XML1.0 DTD功能的超集。它豐富的表現力超過D C D,但遠比R D F精練。簡而言之,
這是一個有前途的元數據成就。
1 9 9 9年1 2月1 7日的工作草案被分成兩部分:結構和數據類型。
結構部分,XML 模式部分:結構,處理元素和屬性的描述和聲明。那里提供的材料允許
X M L設計者去指定復雜的元素結構及設定這些元素內容數值的約束。這些描述部分可以從
h t t p : / / w w w. w 3 . o rg / T R / x m l s c h e m a - 1 /上找到。
第二部分,XML 模式部分2:數據類型,提出了標準的數據類型內容集合,就像從它們生
第7章命名空間和模式使用209 下載
成新類型的規則一樣。這些描述部分可以從h t t p : / / w w w. w 3 . o rg / T R / x m l s c h e m a - 2 /上找到。
7.6.1 DTD與XML 模式的比較
你目前正充滿希望地急于去學習XML 模式的正式語法。只是為了證實一下,在這里讓我提
供一個非常簡單的D T D和它的翻成X M L模式的形式。對于我談到過的有關模式和它們的特性,
我還沒讓你看過一個例子。當前的做法—D T D—和我們希望成為未來做法的模式的對比,
將會讓你看到事物是怎樣急劇地變化的。它將讓你對目前為止所討論過內容有所領悟。不要過
多擔心模式的語法。我們將要在下面幾部分詳細研究。試著勾畫一幅情景,并且用它來作為今
后的參考。
考慮下面給一個人命名的D T D:
程序清單7 - 11
我們最少必須擁有姓和名兩部分,但可能隨意地擁有一個中間大寫字母,敬語( M r. , M s . , D r.
等)和一個后綴(J r. , I I I等)。在模式里這些看起來就像這樣:
程序清單7 - 1 2
模式表單有些長,但你將會注意到我們描述了更多的信息。開始,我們有一個< S c h e m a >元
素作為模式的根結點。然后有一個元素叫做“ N a m e”,它的名字在< e l e m e n t >標記“n a m e”屬性
里被賦值,于是聲明一個< n a m e >元素:
這為了什么?我曾經在最簡單的表單里使用它,但是你應該知道它能被賦予一個名字,并
被給予一個聲明。在這樣的表單里,它適用于在別的地方重用,以及描述< N a m e >元素的內容模
型。注意包含在< N a m e >里的元素是怎樣被聲明的。因為它們是簡單的類型(比如字符串或
210使用XML 高級編程
下載
P C D ATA),我們能在< N a m e >聲明實體里去聲明它們,而用再做其他處理。你將要看到X M L模
式提供了一個比我們現在D T D里有的更長的基礎類型列表。
注意任意的元素是怎樣描述的。通過模式,我們能夠描述元素出現次數的最小值和最大值。
這能導致比我們能在D T D里描述的更復雜的內容模型。
但是終上所述,很明顯的事實是—模式是X M L。你在前幾章學到的D O M操作能被用來應
對程序里的這個模式,并能將它拆開。這些在D T D表單里不能實現。
7.6.2 結構
我們能用D T D定義的每一件事在XML 模式的結構部分得到了解釋。由于XML 模式是由
X M L語法寫成,結構是指我們能用來定義標記的X M L命令。當然,這意味著XML 模式實際上
只是X M L的另一個應用(一個為了定義X M L文檔類的詞匯表),并且正是如此,擁有了一個模
式可以來描述它自己(事實上,附錄里為XML 模式結構部分提供了模式和D T D去描述模式詞匯
表)。
于是規范的結構部分是定義模式的元素和屬性出現的地方。更重要的是,元素的內容模型
在這里得到了描述。內容模型明確地描述了允許的元素內部結構。結構是XML 模式的核心。于
是讓我們詳細考慮一下它們。
1. 編寫模式
一個模式由導言、不定數量(或沒有)的定義和聲明組成。下面幾部分討論這些定義,于
是讓我們從導言開始。
(1) 導言
在根元素模式可找到導言。這一定至少包含屬性的三部分信息:
• targ e t N S,它是正在使用的模式的命名空間和U R I
• version,用來指定模式的版本
• xmlns,為XML 模式規范提供命名空間
• 可選,f i n a l D e f a u l t和/或者e x a c t D e f a u l t,為兩種后面將要常涉及的擴展名提供缺省值
它可能包括轉出和轉入,包括結構,這些我們將在后面討論它們。這里是一個演示導言的
模式例子:
程序清單7 - 1 3
這里,我們假定的模式駐留在m y s e r v e r,并且叫做m y s c h e m a . x s d,. x s d是XML 模式的文件
擴展名。它保留在第一個版本里。缺省的命名空間聲明是XML 模式:結構的引用,并且它是一
個關閉的模型模式,這意味著所有與這個模式一致的文檔將要完全由模式來定義,完全不含有
任何外部內容。
第7章命名空間和模式使用211 下載
(2) 簡單類型定義
為XML 模式定義的結構緊緊依賴于類型定義。這允許一個模式設計者去聲明能在模式里使
用的擴展類型。它們將要被用于說明元素和屬性的內容和類型。一個簡單類型定義用于限制不
包括元素的信息。它由名稱和說明組成,其中的說明既是另一個類型定義的引用,又是一系列
面的集合。面將在本章后部的數據類型部分被詳盡描繪。在數據類型元素里可找到獨立簡單的
類型定義:
程序清單7 - 1 4
我們將要詳細討論數據類型的結構。也能在其他的聲明里有一個簡單的類型定義,比如屬
性。這由t y p e屬性完成,例如t y p e = " s m a l l I n t ",它告訴我們聲明項的類型。
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(77)