曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
的整個目錄(關于所有書籍的詳細資料),而這會迫使使用者從整個目錄中搜索自己感興趣的
一本書的信息,相反發送方僅發送這一本書的程序段給使用者即可。這樣就會減少傳輸消耗的
帶寬,進而使接收段的剖析更為快捷,直接得到需求的信息,而根本不用去考慮濾除不必要的
信息。
2. 收集信息子集
讓我們擴展一下本章前面的例子。假定Wr o x在X M L目錄文檔中包含了關于特權,分布數量
等的私人信息。不過,如果信息不是鄰近的, X F I不允許我們將其作為一個段來傳送信息, X F I
這里顯然不是一個好的解決辦法。讓我們看下面的例子:
第8章鏈接和查詢使用279 下載
程序清單8 - 6 1
如果一個人索要關于《IE5 XML Programmer's Reference》這本書的信息,就會產生一個僅
僅包含兄弟元素作為該書的公有信息的程序段,但不包括私有信息:
程序清單8 - 6 2
然而,程序段對信息編輯來說不是個好的選擇(編輯待打印的信息子集),因為只有鄰近的
章節被指定—如果我們想發送除去私有信息的整個目錄,利用程序段的方法將不能達到這個目
的。對這類操作一個更好的辦法是X P a t h和X S LT,在我們討論那些技術的時候將會看到這一點。
3. 實時編輯和版本控制
仍然看上面的例子,我們假設目錄文檔內容更深入一點,實際包含了正被討論的每本書的
文本:
程序清單8 - 6 3
280使用XML 高級編程
下載
下面讓我們看一下如何為該書每個章節實現一個實時編輯和版本控制的簡單表單。
我們需要某一類數據庫來記錄跟蹤樹中每章的當前狀態(參見表8 - 7)。
表8 - 7
書章狀態
IE5 XML Programmer's Reference 1 Not checked out
IE5 XML Programmer's Reference 2 Checked out to “jond”
IE5 XML Programmer's Reference 3 Checked out to “kevinw”
IE5 XML Programmer's Reference 4 Not checked out
當然,如果我們對每章實施控制,就可以把它作為< C h a p t e r >元素上的一個狀態屬性達到這
個目的。
然后我們編寫一段應用程序允許不同的作者和編輯檢驗并對每一章進行檢查。當對一作者
來說某一章被檢查過了,僅把那一個程序段發送給作者:
這就允許一個作者對一個章節進行操作,同時另外一個作者可操作另外一章。而不會相互
改寫和覆蓋對方的工作。當一個作者對某一章的修改完成之后,他就可以把修改程序段發送回
Wr o x,然后集成到整個原始文檔。在數據庫中指定更新一個版本表單,指明何人何時編輯過文
檔將會是一個較簡單的事情,現在一些商業X M L服務器已經可以實現這類功能。
8.5.3 問題:Bare文檔程序段并不總是充分的
前面提到我們可利用X F I檢索到X M L文檔的細節,但是經常接收方需要比此文檔程序段所包
含的更多的信息來完成工作;它經常需要一些上下文的信息。下面我們要考查一些文檔程序段
不足以提供充分信息的情形,然后再看一下W 3 C對這個問題的解決辦法。
1. 描述什么
經常在一個設計好的X M L文檔中,元素根據它們在文檔結構中的不同位置以不同的含義被
重復使用,看下面的例子:
程序清單8 - 6 4
第8章鏈接和查詢使用281 下載
現在,假如收到了如下的文檔程序段:
這是一本編程書的價格還是一對mocha latte的價格?由于沒有充分的信息,所以很難講。發
送方可以發送完整的父元素:
程序清單8 - 6 5
但是現在我們收到一些不想或者不必知道的信息。如果我們知道一些程序段的環境信息,
而不必接收上下文所有的內容,這樣就非常好了。
2. 利用I D R E F和I D R E F S
前面的例子中已經提到了Wr o x已經發布了它的版本控制管理軟件。一位作者正在寫作第四
章,這時她意識到應該為第一章寫的內容引入一個索引,她記得為那一段加了一個I D,但記不
起來是什么了。由于僅僅有第四章程序段可以利用,而不能利用I D R E F映射到第一章的I D,如
果她能有些關于第一章的某類信息就好了—例如利用I D R E F S標識的各部分的標題—而不必
要下載整本書。
3. 驗證處理器
假設我們用D T D來指定目錄例子中的內容:
程序清單8 - 6 6
而且,一位作者想對一個章節進行檢驗。如果該作者利用驗證處理器來查證章節結構,利
用原始的D T D去做會產生一個問題—原始D T D期盼的是一個< C a t a l o g >元素、< B o o k >元素等
等。一個理想的文檔版本會包含占位符來滿足D T D,但不包含占位符的內容,從而使帶寬消耗
和處理時間達到最小化。
282使用XML 高級編程
下載
8.5.4 解決辦法:環境信息
幸運的是W 3 C在制定X F I時已經預計到會產生這些問題,所以提供了向接收方傳輸程序段的
同時附加傳輸環境信息的機制。
1. 什么是環境信息
環境信息是發送到接收方用于幫助描述原始文檔中程序段結構位置的信息。X F I規范在允許
為使用者提供什么樣的環境信息方面有很大靈活性;發送的信息應該基于使用者的需求。是和
直達文檔的程序段祖先一樣少,或者和原始文檔中所有不同的元素標識一樣多,這些由X M L服
務器來決定什么樣的環境信息對用戶處理器有用。
然而規范沒有為環境信息如何傳輸作出明確的解釋,它提出了兩條建議。第一個建議是向
需求方發送兩個文件:
• 程序段上下文規范文件,它包含了有關這個元素的所有必要的信息,和包含該程序段的文
件索引。
• 程序段本身作為一個獨立的文件。
這樣就需要產生兩個文件,其中一個以某種方式隱藏起來(通過存儲在磁盤的文件或者其
他機制),它意味著接收處理器能夠提供圍繞該程序段的信息。
另外一個建議是僅傳輸一個文件,利用命名空間從真正的程序段內容中分離出環境信息。
為了舉例說明程序段交換,我們采用前一條建議(稍后我們再來看后一條建議)。
2. 什么可以是環境信息的組成部分
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(98)