曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
• 探討了X M L程序段交換的工作草案規范,以及如何傳輸帶有環境信息的X M L程序段,從
而有助于解釋X M L程序段。
• 我們探討了一些現有的X M L查詢語言,并通過幾個例子驗證了兩個最新的查詢技術:
X S LT和XPa t h
由于時間倉促,這些技術很多還沒有被廣泛應用,相信不久的將來它們肯定會成為被廣泛
使用的X M L技術集合的一個組成部分。如果你已經了解了這些技術,當它們變得實用的時候,
將會使你在未來的競爭中更具優勢。
第8章鏈接和查詢使用309 下載
下載
第9章轉換XML
有人將X M L說成一種文檔格式。有人將它說成一種存儲數據的分級模式。按照其他的標準,
一個X M L文檔可以被理解為通過一種網絡化的處理機構來遍歷數據。每個網絡節點存儲或處理
數據并且將結果傳輸傳給相鄰的節點。在這個世界里,一個X M L文檔是一種流過或流在一個網
絡中的應用中的數據。然而,我們看到,任何X M L文檔都是元素的匯集。這些元素是按某種方
案組織的(無論是顯式的,即通過使用D T D或其他的標準,還是隱式的,即沒有一個定義過的
標準),并且也可能是一種分級命令。我們也可以說X M L文檔是一個序列化版本的分級命令—
一種用于在處理機構之間交換信息的文本。然而,在內部,這些處理機構并不使用序列化的版
本(X M L文檔)而是使用更便于工作的內部表示。
如果X M L真能夠幫助我們,來創建可相互跨越平臺的與不同應用之間相互交流的復雜的應
用,并且我們真的想重用使用X M L標識出的數據,共享那些使用X M L作為一種通用格式的數據
的話,則需要為那些沒有對他們的數據使用相同命令的人和應用做一些準備。在這一章,我們
將考查一下有哪些方法可以將我們的數據轉換為另一種X M L詞匯表的數據,或只是重新排列一
下我們的數據。
在這一章,我們將重點放在處理X M L的轉換方面。轉換X M L有很多的原因,所以在這一章,
先首先看一下為什么和什么時候要將X M L轉換為另一種格式。我們主要使用X S L轉換方式,盡
管將在本章的最后討論其他轉換的方法。
在X M L領域中關于可用的不同的轉換方法已經引起了激烈的爭論。不同的程序員通常喜歡
用不同的解決方法來處理轉換X M L,所以,我們將看一下下面的可選方法中的一些觀點,這樣
你可以決定使用哪一種方法(我們假設在讀過的第5章后你已經熟悉D O M,或者已經正在使用
它)。
在看完了為什么需要轉換文檔的幾個原因之后,我們將繼續看一下使用X S LT作為轉換語言。
我們將向你介紹基本的語法,讓你通過使用X S L來轉換文檔。這將包括一個將書的命令轉換為
一種新命令的例子。注意這個轉換要求X P a t h的知識,它是一個在X S LT中使用的規格說明,用
來指定一個X M L文件的特別部分。X P a t h已經在前面的章節中詳細地說明了。一旦我們看過了
X S LT,我們將看一下如何使用D O M和腳本來修改同一本書列表的命令。在看過更多的動態文檔
之后,我們將使用所學的這章X S L部分和更早的D O M章節中的知識,根據用戶的交互作用,創
建一個重新排列過表格內容的文檔。然后我們將比較兩種轉換方法。為了將轉換包裝起來,我
們將看一下什么時候你可能會考慮使用不同的方法。總共這一章將涉及:
• 為什么X M L轉換是必要的。
• 關于X S LT語法的介紹。
• 使用X S LT來轉換靜態文檔的一個例子。
• 使用X S LT來轉換更多的動態X M L文檔。
這個將把你帶到為所需要處理的X M L文檔選擇轉換類型的位置上來,并且教給你在不同轉
換類型背后的核心原則。
9.1 為什么轉換XML
如果我們使用X M L來存儲基于文本的文件,或者我們接收由其他類型的程序生成的X M L,
它是一種混合格式。因為X M L是一種平臺獨立的,并且可以在應用中的不同部分之間被轉換,
這就經常出現人們要求以不同的命令來處理信息。另外,我們可能經常需要根據一個變動的交
互文檔轉換文檔的命令。例如,根據一個用戶的要求或選擇進行文檔的重構。轉換一般屬于下
面三個方面之一:
• 命令的轉換—從一種X M L術語轉換成另一種,就像翻譯一樣。例如兩種金融標識語言
F P M L和f i n M L的例子。
• 創建動態文檔—允許用戶對文檔進行重組、過濾和部分排序,就像允許用戶點擊一個表
格列的頭對內容進行排序一樣。
• 轉換成另一種解釋語言—準備提交給用戶用在一些瀏覽器上,如WA P(無線應用協議,
Wireless Application Protocol)、H T M L、V O X M L或S V G(可變向量圖形,Scalable Ve c t o r
G r a p h i c s)。
讓我們按順序看一下每一部分。
9.1.1 在不同詞匯表之間轉換
如果我們再考慮一下在第2章中用X M L標識出的書的目錄,可能對目錄數據存在著許多潛在
的應用。例如,Wr o x可能在它的站點上或內部網中使用這些書的一個目錄,使用在第3章我們所
創建的D T D。與此同時,幾家書店也幾乎要求相同的信息。這個聽上去像是一個關于X M L的理
想工作。然而,如果不同的書店使用不同的D T D來標識相同的數據,我們需要一種方法來將數
據轉換成同他們相兼容的版本。
例如,w w w. w r o x . c o m站點可能使用下面的p u b C a t a l o g . d t d來進行標識,這是在第3章中我們
遇到過的:
程序清單9 - 1
然而,XYZBooks Inc.可能要求一種不同格式的數據,就像:
第9章轉換XML使用311 下載
程序清單9 - 2
正如你所見,兩個< B o o k >元素的屬性有著自己的規則: < I S B N >和< P u b d a t e >。再強調一次,
為了按兩種格式準備和存儲數據,我們只能將一種轉換格式到另一種。
這僅僅是我們需要轉換X M L詞匯表為另一種格式的例子中的一個,我想你可能想出更多的
例子來。在電子商務中,這類的轉換被認為是非常重要,不同的公司可能需要它們的數據的格
式不同。另一方面,我們可能甚至決定更新某個已經存在的應用,需要轉換舊的X M L(現在對
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(105)