曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
是它沒有義務將D T D展示給執行調用的應用程序。如果我們僅僅希望解析器利用D T D驗證文檔
的有效性,那么解析器的該特征不會對我們構成任何影響。然而,如果我們希望查看D T D,就
需要能夠展示D T D內容的定制的解析器。假設我需要了解C a t a l o g元素的內容模型。為了編寫能
夠根據D T D動態創建模板文檔且允許作者填入空白的通用工具,這一功能是非常必要的。我們
還可以利用該功能告知文檔的作者,當他面對文檔中無效的標記時有哪些可選的修改方案。我
們曾經希望能夠動態創建D T D,即:根據某些運行時的情況修改內容,但是如果沒有能夠讀寫
D T D的特殊A P I,我們只能望洋興嘆。就目前的XML 1.0解析器而言, D T D是只讀的。實際上,
這方面的需求的確在不斷增長。在不久的將來,我們希望看到能夠自動發現D T D的內容(或者
通用的有效性模式)并可對之進行修改的自動化工具。
我們已經看到了有關D T D語法的實例。由于D T D元組聲明的缺陷, R e c S u b j C a t e g o r i e s元素
的內容模型不得不重復三次C a t e g o r y元素。我們曾經在本章的前面看到一些非常復雜的內容模式,
但是它們需要依靠設計者的智慧。許多情況下,之所以采用復雜的內容模型,完全是為了擺脫
78使用XML 高級編程
下載
D T D元組工具的限制。在圖書目錄例子中,通過p u b D a t e和p a g e C o u n t屬性,我們發現D T D需要
更加強大的屬性數據類型定義機制。P r i c e元素本身本應該使用更強的數據類型定義。如果我們
的應用程序需要對來自X M L文檔的數據進行操作,而不是單純的顯示,這方面的機制是至關重
要的。D T D在某些表示方面確實有待改進。
3.6 小結
文檔類型定義為前一章介紹的格式正規的X M L提供了嚴格而精確的規則。通過幾個簡單的
標記聲明,我們能夠定義X M L文檔的結構以及它所允許使用的內容。D T D為X M L應用程序提供
了以下三項功能:
• 精確的商業問題模型的文檔。
• 模型與X M L解析器之間的標準通信方式。
• 驗證有效性的解析器能夠檢測X M L文檔中的錯誤。
第一點意味著我們將D T D作為分析和設計工具。你需要依靠D T D驗證X M L的有效性,D T D
迫使設計者提供有關X M L詞匯表的精確信息。X M L應用程序之間的通信是以它對詞匯表的理解
為基礎的,因此D T D向程序員和測試者指出應用程序能夠描述的內容。
內部和外部D T D為應用程序提供了獲取模型的標準方法。如果應用程序要求執行有效性驗
證,解析器將尋找內部聲明子集或者請求獲取外部D T D。
驗證有效性的X M L解析器可以看作是一種非常便利的錯誤檢測機制。它能夠發現基于X M L
的應用程序中的結構和內容錯誤,為進一步的邏輯檢查掃清了障礙。為此,你應該盡可能保證
D T D中的聲明詳細而準確。你在D T D上花費的心血越多,應用程序出現錯誤的幾率就越小。
第3章文檔類型定義使用79 下載
下載
第4章數據建模與XML
X M L應用程序的成功與否取決于你真正使用的X M L文檔的設計的優劣:這些文檔不僅要攜
帶目前人們進行交流所需的信息,而且要足夠靈活以適應未來的需要。本章介紹了在你設計
X M L文檔時需要考慮的若干因素。
我們將從以下三方面討論設計過程:
• 信息建模—理解文檔所攜帶的信息的結構和含義。
• 文檔設計—將你的信息模型轉換為一組規則(或模式),以便創建真正的文檔。
• 模式表示法—一種記錄你的文檔設計的技術,它使得文檔設計能夠被處理軟件和人類用
戶所理解。
4.1 信息建模
當我們在前一章介紹圖書目錄問題時,曾經進行了一些簡單的信息建模工作。在本章,我
們將詳細地討論建模,并通過一些實際的例子說明它在設計基于X M L的信息系統中的作用。
信息建模的第一條規則是將精力集中于“現實世界”,而不是技術。信息模型是對一個組織
機構中所用到的信息的描述,它獨立于任何I T系統。
• 如何將它結構化?
• 它有什么含義?
• 誰“擁有”它,誰負責保證它的時效性和質量?
• 它來自何方,最終會產生什么樣的結果?
因此根據定義,對于信息建模的討論不能過度針對于X M L。在本章稍后,我們將專門闡述
有關X M L的問題。
那么,在本書中有必要討論建模嗎?當然,因為如果你參加與X M L有關的項目,理解信息
建模是非常關鍵的。另外,雖然信息建模是獨立于技術的,但是在介紹關系數據庫設計的書中
常常會討論建模問題,而且某些方面的論述往往有些偏頗。在這本專門介紹X M L的書中,我們
能夠從另一個角度或許是更加全面的角度看待這個問題。
信息建模為什么如此重要?因為如果沒有模型,就談不上信息,有的只是數據。信息模型
定義了數據的含義。事實上,信息模型是必不可少的;唯一可以選擇的是采用大家一致同意的
共享信息模型,還是冒險允許每個人根據自己的想法采用不同的信息模型(它不可避免地會造
成相互之間的誤解)。如果使用共享信息模型,將帶來無窮的機會。來自M i c r o s o f t的A d a m
B o s w o r t h、Andrew Layman和Michael Ry s在一篇文章(h t t p : / / b i z t a l k . o rg/Resources/ canonical.asp)
中曾有以下敘述:
⋯⋯我們早已開始著手實現一個曾經夢寐以求的目標:無論數據產生者位于何處,任何
數據消費者都能夠通過某種工具與他們交互,并且這種通信是基于數據的含義,而不是
數據偶然的表現形式。
在本書中,我們將側重于通用的原則,而非某些特殊的形式。如果你希望了解建模的方法,
例如:U M L(Unified Modeling Language,統一建模語言),有大量這方面的書籍可以參考,另
外,h t t p : / / w w w. r a t i o n a l . c o m /上也提供了完整的規范。在信息建模中,以下兩個目標常常會產生
沖突:
• 獲得絕對精確的定義。
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(33)