4. XSLT

元素 |
描述 |
apply-imports |
應用來自導入樣式表中的模版規則 |
apply-templates |
向當前元素或當前元素的子元素應用範本 |
attribute |
向元素添加屬性 |
attribute-set |
創建命名的屬性集 |
call-template |
調用一個指定的範本 |
choose |
與以及協同使用,來表達多重條件測試 |
comment |
在結果樹中創建注釋節點 |
copy |
創建當前節點的一個備份(無子節點及屬性) |
copy-of |
創建當前節點的一個備份(帶有子節點及屬性) |
decimal-format |
定義當通過format-number()函數把數位轉換為字串時,所要使用的字元和符號 |
element |
在輸出文檔中創建一個元素節點 |
fallback |
假如處理器不支援某個XSLT元素,規定一段備用代碼來運行 |
for-each |
遍曆指定的節點集中的每個節點 |
if |
包含一個範本,僅當某個指定的條件成立時應用此範本 |
import |
用於把一個樣式表中的內容倒入另一個樣式表中 |
include |
把一個樣式表中的內容包含到另一個樣式表中 |
key |
聲明一個命名的鍵 |
message |
向輸出寫一條消息(用於錯誤報告) |
namespace-alias |
把樣式表中的命名空間替換為輸出中不同的命名空間 |
number |
測定當前節點的整數位置,並對數位進行格式化 |
otherwise |
規定元素的默認動作 |
output |
定義輸出文檔的格式 |
param |
聲明一個局部或全局參數 |
preserve-space |
用於定義保留空白的元素 |
processing-instruction |
生成處理指令節點 |
sort |
對結果進行排序 |
strip-space |
定義應當刪除空白字元的元素 |
stylesheet |
定義樣式表的根元素 |
template |
當指定的節點被匹配時所應用的規則 |
text |
通過樣式表生成文本節點 |
transform |
定義樣式表的根元素 |
value-of |
提取選定節點的值 |
variable |
聲明局部或者全局的變數 |
when |
規定元素的動作 |
with-param |
規定需被傳入某個範本的參數的值 |
它的主要發展歷程如下:
1995年由James Clark提議;
1997年8月正式提案為XSL;
1998年5月由Norman Walsh完成需求概要;
1998年8月18日XSL草案發佈;
1999年11月16日正式發佈XSL1.0推薦版本。
(1)CSS不能重新排序文檔中的元素
(2)CSS不能判斷和控制哪個元素被顯示,哪個不被顯示
(3)CSS不能統計計算元素中的資料
換句話說,CSS適合用於輸出較固定的最終文檔。而XSLT適合用於輸出較不固定常修改的文檔。CSS的優點是簡潔,消耗系統資源少;而XSLT雖然功能強大,但因為要重新索引XML結構樹,所以較消耗記憶體。若能在兩者中截長補短,必能發揮其最大效益,在伺服器端用XSLT處理文檔,在用戶端用CSS來控制顯示,這樣就可以減少回應時間。
CSS
|
XSLT
|
|
適用在HTML |
可以
|
不行
|
適用在XHTML |
可以
|
可以
|
適用在XML |
可以
|
可以
|
使用的語法 |
CSS式樣語法
|
XML語法
|
是否是轉換語言 |
不是
|
是
|
1.可自動轉換成多種的輸出格式
2.可隨時在XML資料內抓取資料,不受XML資料結構影響
3.將數據與表達形式分離
4.XSLT在客戶端進行可以大大減少伺服器的壓力,伺服器只需要將XML數據發送到客戶端,減小網路流量
5.安全性高,若查看XSLT轉換後的原始碼頁面,只會看到XML資料
6.XSLT可以一對多,創造多種版面,而html只能一對一,通過script來創造
7.處理XML比DOM方便,對於目前盛行的Ajax應用來說,尤其便利,可以參考AjaxSLT
AjaxSLT是針對Ajax在取得XML資料格式後,利用JavaScript動態加入XSL-T與XPath的運用所開發的一套元件。一般而言,XMLHttpRequest在傳回XML字串後,我們必須花另一個功夫將這些XML資料轉換成能夠顯示給用戶的介面,這是非常繁瑣的工作,而且程式碼是一個麻煩。但使用AjaxSLT後,可以利用XSLT模版對 XML檔進行處理,然後就可以輸出一個用戶介面了,方便許多。
- XSL: Extensible Stylesheet Language Transformations (XSLT)
- Template Match
- Operations: Condition, Iteration, Copy, Sort
XSLT= Extensible Stylesheet Language Transformations
XSLT是把XML檔案轉化為另一檔案的轉換語言,即將源檔案的所有數據或者部分數據,利用XPath進行選擇,生成另外的XML檔案或者其他可直接顯示或打印的文件格式。XSLT語言是聲明性的語言,即XSLT程序本身只是包含了一些轉換規則的檔案。而這些規則可以被遞歸地應用到轉換過程中。XSLT處理程序會首先確定使用XSLT中的哪些規則,然後根據優先級作出相應的轉換操作。
XSLT是一種 Script Language, 功能上主要分為兩個部份:
- 轉換XML文件 : 將XML文件架構轉換成另一XML架構的文件或HTML文件.(XSLT)
- 格式化XML文化 : 格式化Element內容的Style, 以便顯示出XML文件.(XSL)
簡單說, XML配合XSLT就可以在支援HTML的瀏覽器上顯示文件的內容.
◎ XSLT 可用於 XML 轉換成其他格式的 XML, HTML 或其他格式檔,所以,將它視為
- 檔案格式轉換程式
- 或,一種 Template Engine
◎ 和 DOM Tree 的處理一樣,藉由 XPath 的方式來「指定」XML 文件內的特定 element,然後進行各 element 內容的萃取以及處理,一些可以縮寫的 XPath 語法
XSL=Extensible Stylesheet Language
XSLT由W3C所定義的。
XSLT是將執行的結果用樹狀的結構來呈現出來。
利用XSLT我們可以把輸入的XML文件(可能是元素或屬性)插到模板當中再產生結果樹。
xsl:apply-templates 將模板套用在節點上的指令
xsl:output 指定輸出文件的格式
xsl:template 指定一個模板
模板(template)是樣板中最重要的部分,每個元素都有吻合屬性,用來指定輸入文件的那個部分需套用的模板。
一個xsl:template元素為字元字串及指令的組合。
命名空間前置字xsl可以把字元字串與指令區別開。
而當某個模板被套用時,它的字元字串就會被複製到輸出的文件當中,進而指令就會被執行了。
字元字串可以是任意的字母所組合出來的,但先決條件是要被XML所允許。