曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
你來說還只是一種想法)為新的命令。
轉換在X M L中擔當著一個重要的角色,要記住,一旦使用X M L做了標識,我們就可能重新
使用數據。畢竟,如果我們僅是需要執行一個簡單的轉換工作,那就沒有必要將數據保留兩個
版本了。X S L的轉換能力非常適合這類轉換。
9.1.2 動態轉換
上一節考查了一下以不同的方式提供相同的數據,兩種方式都要求明確的,靜態版本的
X M L文檔。但是也意味著我們可能需要做更多的動態轉換。如果你考慮過電子表格,在近二十
年之前,它無庸置疑地改革了桌面P C的使用,用戶可以要求點擊表格列的頭部使數據重排。這
就要求一個動態轉換。
任何要求用戶交互的轉換,或產生交互文檔的轉換,同產生一個靜態文檔相比是一個相當
不同的工作。動態轉換通常要求事件處理,它包括編程語言的使用。
因為腳本語言和D O M允許無X S L的轉換,又因為文檔對象模板( D O M,Document Object
M o d e l)可以被使用在瀏覽器上,通過與J a v a S c r i p t和其他語言(如J a v a,C + +,P e r l,Vi s u a l
B a s i c或P y t h o n)的綁定,所以有些人寧愿通過D O M和腳本(無X S L)來完成動態轉換。在這一
章的后面,我們將看一下使用兩種方法的例子,還有為什么你優先想使用其中一種方法的原因。
9.1.3 不同的瀏覽器
許多的We b開發者都有著這樣的經歷,開發并行站點或為不兼容的瀏覽器開發部分站點是一
件頭痛的事。對于不兼容的瀏覽器來說存在著, X M L僅能夠服務于We b瀏覽器,理解X M L可能是
另一回事了。然而,如果我們打算用X M L開發站點,則能夠將它轉換為不同的標記語言,所以可
以從核心的X M L內容中創建出不同版本的H T M L。讓我們看一下它是如何工作的(參見圖9 - 1)。
312使用XML 高級編程
下載
圖9-1
在這里我們使用了三種不同的樣式表來創建X M L內容的三種不同版本。I E 5的版本可以仍然
使用X M L,另兩種可能是兩種不同的解釋語言。這個方法避免了給不同的瀏覽器將內容復制三
次。通過轉換X M L數據,幾個頁面可能使用相同的X M L內容,可以提供給請求的瀏覽器按正確
的格式翻譯好的頁面。在這個例子中,我們簡單地使用X S L樣式表作為一個模板來演示數據如
何被顯示。這些樣式表作為下面數據的模板,所以可以使用這些樣式表來轉換幾頁的數據。
實際上,在需要顯示在瀏覽器上的時候,將X M L轉換成H T M L是非常流行的,因為W 3 C
關于XML的詳細說明很少。
由于新型的瀏覽器在I n t e r n e t上的出現,這個方法開始變得日益重要。我們已經看到了數字
電視,游戲控制,多種的移動設備,從手持個人數字助理( P D A,personal digital assistants)到
移動電話,都提供I n t e r n e t處理。隨著這些不同的客戶端的增加,它們分享著瀏覽器市場,它們
將對為它們不同的需要而設計服務頁面造成壓力。可能包括,轉換X M L為另一種標識語言,就
像無線標識語言( W M L,Wireless Markup Language),它是一種應用于移動電話和P D A中的。
所以,將內容轉換為另一種版本的能力將變得逐漸普通起來。
9.2 XSL
可擴展樣式語言( X S L,eXtensible Sytlesheet Language)是一種基于X M L的語言,它被設
計用來轉換X M L文檔到另一種X M L文檔或轉換X M L文檔為可翻譯對象。原始的X S L語言已經被
分割成三種不同的語言:
• 轉換工具( X S LT)。
• 翻譯工具( X S L F—可以包括X S LT的使用)。
• XML分級命令處理工具( X P a t h)。
X S L有它自己的根,不管是在層疊樣式表( C S S)中還是在一種叫D S S S L(文檔樣式語義和
規格語言(D S S S L—讀為' d e e s s e l '))的語言中。隨著它的發展, X S L的樣式表現變得更接近
于C S S和遠離D S S S L。樣式化在第1 3章中有描述。
你可能已經猜到,在這一章中我們所看到的關鍵點是X S L的轉換能力。X S LT規范從1 9 9 9年
第9章轉換XML使用313 下載
XSL
樣式表
XSL
樣式表
PCS
電話
11月1 6日起成為一種推薦的規范。由于它依賴于X P a t h規范,所以同一天X P a t h也成為推薦規范,
在文檔轉換領域作為一種可選方法。
X S LT
這一部分考查了我們如何使用X S LT來轉換X M L文檔,并且我們將看到X P a t h是如何應用到
X S LT中的。在X S LT規范的第一行中明確指出:“[ X S LT ]是一種轉換X M L文檔到其他X M L文檔
的語言”。如同我們在前面看到的一樣,出于某種原因,我們可能需要將X M L轉換為另一種命令。
為了實現這一點,需要一個X S LT處理器。一旦看過X S LT處理器實際的工作之后,我們將討論
兩個常用的工具。
X S LT是用X M L編寫的語言。這就意味著,一個用來轉換X M L的X S LT樣式的表,實際是一
個有著良好命令的X M L文檔。所以,在這一章,我們將學習X S LT的語法和了解它能為我們做些
什么。
首先讓我們先明確一個非常重要的一點:
XSLT引擎不用來操作文檔,而是用于操作命令。
為了讓一個X S LT引擎能夠轉換X M L文檔,文檔首先要被轉換為一種命令( s t r u c t u r e )或一種
內部模型(internal model)。內部模型是一棵樹。這種模型是獨立于任何一種處理它的A P I的。在
S G M L世界,這種抽象的模型叫做一個樹林( g r o v e )。因為, X M L是S G M L的子集,繼承了S G M L
的一些基本的概念。所以,樹林是一種簡單的抽象樹狀命令,獨立于任何一種處理這棵樹入口
的A P I。例如, D O M就是W 3 C推薦使用于處理樹的A P I。D O M是A P I,而樹林則是抽象命令。所
以,一個樹林可能有多于一種的A P I或擁有不同語言的不同的A P I。在整個章節中,在談到抽象
樹狀命令時我們使用樹林。
看一下下面的X M L:
程序清單9 - 3
可能被表示為一種抽象樹的型式,如圖9 - 2所示。
它并不關心于我們將如何看待或處理文件, < Ti t l e >、< A b s t r a c t >、< R e c S u b j C a t e g o r i e s >和
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(106)