曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
下載
這時,我想以不同的元素內容重用屬性組。我已經能夠在元素聲明里通過明確地描述內容
模型做到這些。注意,我的內容模型包含N u t和B o l t類型的元素。我將必須在模式中別的地方聲
明這些類型。
(8) 通配符
X M L模式提供a n y元素允許我們引進一個通配符到一個模式的任何特殊點。模式提供了下面
四種中任意一種寫模式方法開始工作:
• 任何格式正規的X M L元素結構
• 任何格式正規的元素結構,只要它在任何一個通配符不出現的命名空間
• 任何格式正規的元素結構,它是從一個明確的命名空間提供出來的
• 任何格式正規的元素結構,它是從一個當前的命名空間提供出來的
通配符也可以用在與屬性的關聯,在那里我們能使用a n y A t t r i b u t e元素。這是四種情況的每
一個例子:
程序清單7 - 2 6
注意, o t h e r和t a rg e t N a m e s p a c e關鍵字的使用方法。現在有一個在與元素聲明里的屬性建立
關聯里使用通配符的例子:
程序清單7 - 2 7
這里我們聲明了一個元素,它有一個單一子元素, < s o m e N u m >,并且可以有任意的在W 3 C
模式為XML 模式聲明的屬性。
2. 派生類型定義
當在類型上使用源屬性時,我們非常有效地從現有的類型派生新的。XML 模式提供一些正
第7章命名空間和模式使用217 下載
式的規則用來類型派生,我們現在就要檢查這些規則。特別是我們能擴展一個類型或限制它。
d e r i v e d B y屬性的值說明了使用了哪種方法。
派生
當一個新的類型添加附加的內容到它原來的類型時,它擴展了另一個類型。這種情況下,
所有在源類型里聲明的內容將會出現在派生的類型里。例如,我們通過在現有內容添加一個敬
語元素來擴展了一個P e r s o n N a m e類型聲明:
程序清單7 - 2 8
但如果我們想因為某種原因限制一個類型而派生一個新類型時,我們能給d e r i v e d B y屬性一
個限制值,并且添加< r e s t r i c t i o n s >元素:
程序清單7 - 2 9
在這里我們限制了類型,于是< M I >元素不再出現。當派生類型時,要確認關于元素和屬性
的限制比起那些關于相同源類型的聲明限制更加有限制性。
類型可以控制從它們自己派生,以及通過使用三個屬性: a b s t r a c t , e x a c t和f i n a l控制它們在
實例文檔里出現。如果a b s t r a c t的值是t r u e,沒有聲明的類型實例可以出現在實例文檔里。正
如希望的其暗含的缺省值是f a l s e。如果e x a c t的值是t r u e,在它那里沒有派生的類型出現在實
例文檔里。只有被聲明過的類型可被使用。如果f i n a l的值被賦成t r u e,今后不再允許類型派
生。
3. 撰寫
我們能將模式和命名空間聯合在一起允許使用者從多個模式建立文檔實例。模式也允許設
計者使用其他的模式建立他們自己的模式文檔。這在術語上稱為撰寫( C o m p o s i t i o n)。
(1) 引入
你能引入另一個模式的一部分用在提供了的其他模式的命名空間,< i m p o r t >元素涉及了這些。
這個元素擁有命名空間屬性,它的值是你想要使用的模式的U R I。你也可以提供一個模式
L o c a t i o n屬性去指向想要的模式文件。一旦你引入了一個命名空間,就能夠在你的模式里使用一
些從其他模式來得結構:
218使用XML 高級編程
下載
程序清單7 - 3 0
當一個結構被引入到一個模式里,它保留著外部的資源。我們正在有效地組建一個新的模
式,通過連入部分另一個模式而不是將它們整個包含進新的模式。當一個驗證解析器按照模式
驗證一個文檔時,它必須重新得到其他模式去驗證與外部資源不一致的文檔里的組成部分。
(2) 包含
< i n c l u d e >元素說明了包含。它在一個模式里出現在< i m p o r t >元素之后,< e x p o r t >元素之前。
< i n c l u d e >元素和需要的屬性模式L o c a t i o n一起是個空的元素,它的值是一個指向包含模式的U R I。
當這個元素出現在模式里時,這個模式被理解成包含它聲明過的類型,同時所有包含的模式里
聲明的類型提供了幾個遇到的標準: U R I必須融入另一個模式,而這樣設計的模式必須有一個
t a rg e t命名空間屬性并與包含模式的t a rg e t命名空間屬性值一致。
4. 注釋模式
沒有計算定義和代碼是不需要提供附加的注釋或處理信息的機制來完成的。模式為這個提
供了< a n n o t a t i o n >元素。這個元素可能包含由字符數據而不是人類的假想構成的< i n f o >元素,或
者為模式做同樣事情的< a p p i n f o >元素。無論哪個元素可能有一個i n f o S o u r c e屬性,它提供一個有
更多信息的U R I引用。
程序清單7 - 3 1
7.6.3 數據類型
真實世界依賴于數字、字符串和集合概念,于是用現代程序語言寫成的程序支持為了定義
新類型而內嵌類型和過程的詳細體系。而且對于XML 模式附加的數據類型對程序員為他們應用
程序里的數據而使用X M L將是一筆很大的財產。這種對數據類型的支持包含檢查文檔里數值的
有效性,以及在處理X M L文檔時幫助從文本到原始類型的合適的轉換。于是如果我們打算用
X M L文檔作為集成程序和系統的基礎,我們需要捕捉標記的信息的數據類型。
這就是XML 模式規范的第二部分—XML 模式:D a t a t y p e瞄準要做的。它不僅提供了捕捉
基礎數據類型的方法,同時給了我們一個記錄加在屬于我們問題里的數據上的方法。它將讓我
們記錄數值范圍,設置和列出順序。它也將讓我們為數據允許的字符串表示法指定掩碼。
第7章命名空間和模式使用219 下載
模式數據類型被說成擁有一套獨特的值, 稱做它們的數值空間。這是類型能夠具有數值的抽
象集合。例如,整數集是整數類型的數值空間。限制這個空間里的數值的屬性和操作描述了這
個空間的特性。當給用戶去表現一個數據類型時,需要一個詞匯表示—這個類型的字面字符
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(79)