曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
d a t e t i m e . t z d a t e t i m e,帶有可選的時區
f i x e d . 1 4 . 4 數字類型,小數點前不超過1 4位,后面不超過4位
f l o a t 實數,帶有可選的符號、小數位和指數
i n t 整數
n u m b e r 通用數字類型,在位數上沒有限制;可能帶有可選的符號、小數位和指數
t i m e ISO 8601格式的時間組
t i m e . t z 同Ti m e,帶有時區
i 1 1字節有符號整數
i 2 2字節有符號整數
i 4 4字節有符號整數
r 4 4字節有符號實數
r 8 8字節有符號實數
u i 1 1字節無符號整數
u i 2 2字節無符號整數
u i 4 4字節無符號整數
u r i U R I字符串
u u i d 1 6位表示字節并組成一個C O M類型的U U I D;連字號可選,如果有就忽略
第7章命名空間和模式使用227 下載
在Windows 2000之前的解析器版本,上面表格里描述的派生數據類型被限制用于格式正規
的XML文檔。這些版本的XML-DR模式不支持驗證。
7.7.1 MSXML對命名空間和模式的支持
M S X M L具有命名空間和簡化的XML Data 模式預覽的功能。你必須使用M i c r o s o f t的基于
C O M的X M L解析器—M S X M L,它與Internet Explorer 5.0 搭載或者如果你想在代碼里支持
X M L - D R,可以從他們的站點下載。這里反復強調X M L - D R是M i c r o s o f t的技術預覽,而不是
W 3 C的成就。它嚴格地被M i c r o s o f t所有并只由它提供支持。在早期對模式做很多支持嘗試的同
時,M S X M L的X M L - D R支持潛在地對于那些想要加入到X M L元數據前線的程序員來說非常有
用。
MSXML通過XML DOM擴展支持XML-DR和命名空間。
早期I B M的X M L 4 J解析器的嘗試版本(E A 2)部分支持1 9 9 9年9月的X M L模式草案。I B M
指出這種支持今后可能在解析器的發行版里出現。鑒于目前XML 模式的變化形式,提供
正在運行的例子確實非常困難,當你讀完這本書時會明白這一點。
1. 命名空間
M S X M L里對命名空間的支持是非常強大的。當訪問D O M里一個已經被命名空間驗證過的
結點時,你能使用b a s e n a m e或者p r e f i x以及命名空間U R I屬性去獲得與命名空間相關的信息(參
見表7 - 1 2)。
表7 - 1 2
屬性含義
b a s e n a m e 返回字符串,它的值是未經驗證的結點基本名
p r e f i x 返回字符串,帶著命名空間前綴
namespace URI 返回字符串,帶著命名空間的U R I,與結點的命名空間前綴一致
這里有兩種對于程序員有吸引力的辦法處理命名空間。如果你想要使用擴展了的M i c r o s o f t
XML DOM創建一個經命名空間驗證過的結點,不能使用c r e a t e E l e m e n t ( )去直接創建。相反,必
須用文檔對象的c r e a t e N o d e ( )方法。它用枚舉的數值去指明創建的結點類型,驗證了的名稱以及
相關的U R I:
另外,你能通過使用后續設置了x m l n s屬性的c r e a t e E l e m e n t ( )創建一個缺省的命名空間:
但是應注意到,在后面的情況,失去了用命名空間驗證其他名稱的能力。
上面的J a v a S c r i p t程序行用驗證過的名稱< p u b : B o o k >在m y s c h e m a s - p u b命名空間里創建了一
個元素。表7 - 1 3中有部分結點類型枚舉的列表,它們被M S X M L支持,是對命名空間的興趣所
在。
228使用XML 高級編程
下載
表7 - 1 3
枚舉值
N O D E _ E L E M E N T 1
N O D E _ AT T R I B U T E 2
N O D E _ E N T I T Y _ R E F E R E N C E 5
N O D E _ E N T I T Y 6
N O D E _ N O TAT I O N 1 2
一個結點的a t t r i b u t e集合支持g e t Q u a l i f i e d I t e m ( )方法,允許你根據屬性驗證過的名字進行搜
索。這種方法接收所需要屬性的基本名稱和前綴,如果屬性被發現則返回一個結點對象。為了
找到一個屬性p u b : i s b n,將要進行如下調用:
2. 驗證
像任何其他的解析器一樣, M S X M L將要驗證一個D T D文檔。并且如果一個模式由前綴x -
s c h e m a來提供,M S X M L假定接在冒號后面的名稱是一個X M L - D R類型的模式并且要試著將它裝
入并用它驗證文檔。
如果你驗證了你的XML-DR 模式文檔,就有機會獲得權利使用模式結點,它在你的文檔里
定義了特殊的結點。這些由d e f i n i t i o n屬性完成。如果調用了對應于一個元素或屬性的結點,你
將得到一個包含可應用的< E l e m e n t Ty p e >或< A t t r i b u t e Ty p e >元素的結點:
7.7.2 數據類型
M S X M L里的數據類型支持對X M L - D R預覽是獨立的但又是補充。即便你不用模式,也能在
格式正規的X M L里使用強行分類的元素和屬性。為了做到這一點,必須在你的文檔里聲明
M i c r o s o f t數據類型命名空間:
<MyRootElement xmlns:dt="urn:schemas-microsoft-com:datatypes">
一旦做了這些,你能在結點里使用支持的類型。可以預先使用n o d e Va l u e ( )去得到一個元素
或屬性的值的地方,能調用n o d e Ty p e d Va l u e ( )去獲得強行分類的值。假想你有一些包含元素的
X M L:
你可以用J a v a S c r i p t接下來實現下面的內容:
如果有兩個結點< n o d e 1 >和< n o d e 2 >,代表來自兩個不同文檔的< P a g e C o u n t >元素,你能夠
像下面那樣得到整個頁數:
第7章命名空間和模式使用229 下載
屬性n o d e Ty p e S t r i n g返回一個固定字符串,表示數據類型。例如我們的< P a g e C o u n t >,這個
屬性應該返回“i n t”。
7.8 圖書目錄中的變化
目前為止,我希望你能渴望應用命名空間和模式信息到本書目錄的實例里。盡管我們不愿
在本書剩下的篇幅里繼續這個模式,但我還是打算去演示怎樣使用我在這一章里表示過的內容
來改進我們對本書出版信息的理解和組織。
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(83)