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