曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
程序清單9 - 2 5
第9章轉(zhuǎn)換XML使用339 下載
在上面的例子中,我們用< x s l : c h o o s e >方式建立if/elseif 命令。每一個條件用< x s l : w h e n >元素
判斷。你可能注意到我們使用和上一個例子一樣的表達(dá)式,但是這一次使用它檢驗(yàn)每一個單獨(dú)
的分支。既然這樣,我們檢驗(yàn)是否< C AT E G O RY >元素數(shù)據(jù)內(nèi)容包含字符串‘ H T M L’。如果是真
的,我們把這行的顏色屬性設(shè)為紅色。我們繼續(xù)這種方式,檢驗(yàn)另外一個c a t e g o r y類型。和上一
個例子不同的是,我們檢查許多條件,而上一個只是檢查簡單的條件。圖9 - 1 8顯示了輸出。
需要說明的一個重要情況是,我們使用了一種子程序作為模板,簡單的表格不能使用這種
方式。因?yàn)檫@樣,我們使用通常的< x s l : s t y l e s h e e t >命令替代它。
340使用XML 高級編程
下載
圖9-18
9.4.5 名稱模板
在前一個例子中我們使用沒有參數(shù)的名稱模板:
程序清單9 - 2 6
一個名稱模板能夠接收參數(shù)。在我們的例子中,想要行頭部的對齊方式作為參數(shù)(左、右、
居中)。為了這樣做,我們加入< x s l : p a r a m . . . >元素命名模板,像下面的片段中顯示的那樣:
程序清單9 - 2 7
一個參數(shù)被命名為a l i g n m e n t,它的默認(rèn)值是l e f t。另外一個是c o l o r,它的默認(rèn)值是g r e e n。這
些默認(rèn)值能被c a l l - t e m p l a t e重載為命名模板的參數(shù)值:
程序清單9 - 2 8
第9章轉(zhuǎn)換XML使用341 下載
下面顯示了用c a l l - t e m p l a t e命令創(chuàng)建的兩個不同的H T M L文檔(參見圖9 - 1 9)。第一個圖是用
c a l l - t e m p l a t e創(chuàng)建,無參數(shù),兩個參數(shù)值是默認(rèn)的, a l i g n m e n t的值為l e f t,c o l o r的值為g r e e n。另
外一個模式是帶參數(shù)的c a l l - t e m p l a t e命令創(chuàng)建的,在A S P種類中,兩個參數(shù)被設(shè)為c e n t e r和r e d。
圖9-19
9.4.6 編號方式
現(xiàn)在,讓我們給X S LT風(fēng)格表加入行編號,其結(jié)果將如圖9 - 2 0所示。
圖9-20
為了獲得這個結(jié)果,我們使用和前一個例子相同的樣式表,但是這一次我們加入
< x s l : n u m b e r. . . >命令。命令的屬性是v a l u e和f o r m a t,v a l u e指明了插入到輸出樹中的值, f o r m a t指
明了輸出的格式。我們指定v a l u e屬性為元素集(< I T E M >元素)中的當(dāng)前指針位置。下面是代碼
段的模式:
程序清單9 - 2 9
342使用XML 高級編程
下載
< x s l : n u m b e r. . . >元素能夠使用一些另外的屬性,增加它的靈活性。要得到更多的細(xì)節(jié),查看
X S LT在網(wǎng)上h t t p : / / w w w. w 3 . o rg / T R / x s l t中的聲明。
下面是前5個例子的總結(jié),在原始B o o k l i s t X M L文檔中應(yīng)用的X S LT命令:
• 循環(huán)—使用< x s l : f o r- e a c h . . . >元素。
• 排序—使用< x s l : s o r t . . . >元素。
• 條件處理—使用< x s l : i f . . . >或< x s l : c h o o s e . . . >元素。
• 名稱模板—使用<xsl:template name...>,< x s l : p a r a m . . . >,< x s l : w i t h - p a r a m . . . >和< x s l : c a l l -
t e m p l a t e . . . >元素。
• 編號方式—使用< x s l : n u m b e r. . . >元素。
程序清單9 - 3 0
第9章轉(zhuǎn)換XML使用343 下載
圖9 - 2 1是通過以下步驟實(shí)現(xiàn)的。
• 用X T轉(zhuǎn)換原始的X M L文檔。
• 使用Microsoft IE顯示轉(zhuǎn)換的結(jié)果(H T M L文檔)。
任何一個與W 3 C規(guī)范完全兼容的X M L瀏覽器將轉(zhuǎn)換和顯示文檔,如果初始的X M L文檔包含
一個< x s l : s t y l e s h e e t . . . >元素。
圖9-21
9.4.7 拷貝
我們現(xiàn)在可以對Booklist XML文檔執(zhí)行一個不同的操作。我們將在轉(zhuǎn)換后的文檔中保留與
344使用XML 高級編程
下載
初始的X M L文檔一樣的命令,并且結(jié)果仍然為X M L。我們將對< I T E M >元素進(jìn)行簡單的排序,
根據(jù)它的< C O D E >值(數(shù)據(jù)內(nèi)容)。下面的列表將完成這項(xiàng)工作:
程序清單9 - 3 1
首先,只有一個模板用于匹配任意的元素節(jié)點(diǎn)。然后, < x s l : c o p y >元素指明X S LT引擎拷貝元
素節(jié)點(diǎn)到結(jié)果樹。我們也告訴X S LT引擎通過< C O D E >元素的值進(jìn)行排序。結(jié)果通過下面的X M L文
檔進(jìn)行了演示—初始的文檔保持了它的命令,但是<ITEM>元素根據(jù)<CODE>的值進(jìn)行了排序:
程序清單9 - 3 2
9.5 使用DOM進(jìn)行XML文檔的轉(zhuǎn)換
一個X M L文檔也可以使用D O M來轉(zhuǎn)換。D O M是一個樹林的接口,用于文檔的表示。然而,
第9章轉(zhuǎn)換XML使用345 下載
使用D O M來轉(zhuǎn)換X M L文檔可能會步入危險的境地,因?yàn)榇蟛糠值腄 O M實(shí)現(xiàn)可能有大量的私有
的命令。然而,作為這些操作命令的一種解釋,你應(yīng)該把它歸咎于D O M規(guī)范的不足。例如,甚
至在D O M 2規(guī)范中也沒有指出如何裝入或存儲一個X M L文檔,所以一個D O M實(shí)現(xiàn)器將不得不發(fā)
明出對于文檔適合或不適合的方法,這樣在很多的情況下,他們包含了一些私有的命令。
9.5.1 用DOM進(jìn)行命令的轉(zhuǎn)換
為了比較在X S LT和D O M轉(zhuǎn)換X M L文檔命令的方法,讓我們使用這一章中前面的命令化轉(zhuǎn)
換部分的同一個例子。
為了更新,我們想進(jìn)行一個X M L文檔轉(zhuǎn)換,具有這樣的形式:
程序清單9 - 3 3
成為X M L文檔具有這樣的形式:
程序清單9 - 3 4
346使用XML 高級編程
下載
下一部分將展示,V B S c r i p t可以修改Booklist XML文檔的命令。
V B S c r i p t例子
V B S c r i p t可以同我們使用X S LT一樣獲取同樣的結(jié)果。這一部分中的腳本不可移植(原因?qū)?br />
在下一部分描述),并且只能運(yùn)行在Wi n d o w s平臺上。這就是在使用X S LT與使用帶D O M的腳本
中國航空網(wǎng) m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(114)