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