xslt輕鬆入門第一章:xslt概念
作者: 阿捷
前言 大家好,從今天起我們將一起來學習xml家族的另一種語言xslt,xslt類似html中的css,但是比css功能要強大的多。學習xslt的前提是您對xml已經有一些了解,如果您沒有學習過xml,可以先點這裡(看我先前寫的一篇文章《xml輕鬆入門手冊》。xslt可以說更偏向是一種程式語言,但它沒有常見程式語言複雜,甚至比js等指令碼語言還簡單,所以不必擔心學習困難。
阿捷將依然站在普通設計師的角度,用平實易懂的語言,由淺入深的介紹xslt。好了,讓我們一起來探索xslt的秘密吧!
宣告:因為xslt的標準在不斷發展,語法也在不斷擴充,我們下面所學習的知識是以2023年11月16日發布的xslt 1.0為基準的,所以可能是不完整的,最新的資料請到w3c**(
提綱 本文共分五大章:xslt概念,xslt的例項,xslt的元素語法,xpath的語法,xslt的資源。
的概念1.1 什麼是xslt
1.2 為什麼要用xslt
1.3 xslt的歷史
1.4 什麼是xpath
1.5 xslt和css的比較
1.6 xslt和ie5
的概念我們首先來澄清乙個概念,大家可能聽說過xsl(extensible stylesheet language),xsl和我們這裡說的xslt從狹義上理解是一樣的,而按照w3c的標準,xslt的說法更嚴格些,因此我們在文章中統一使用xslt的稱法。它們之間具體的關係我們會在下面講述。
1.1 什麼是xslt
xslt的英文標準名稱為extensible stylesheet language transformation。根據w3c的規範說明書(最早設計xslt的用意是幫助xml文件(document)轉換為其它文件。但是隨著發展,xslt已不僅僅用於將xml轉換為html或其它文字格式,更全面的定義應該是:
xslt是一種用來轉換xml文件結構的語言。
1.2 為什麼要用xslt
我們已經知道,xml是一種電腦程式間交換原始資料的簡單而標準的方法。它的成功並不在於它容易被人們書寫和閱讀,更重要的是,它從根本上解決了應用系統間的資訊交換。因為xml滿足了兩個基本的需求:
(1).將資料和表達形式分離。就象天氣預報的資訊可以顯示在不同的裝置上,電視,手機或者其它。
(2).在不同的應用之間傳輸資料。電子商務資料交換的與日俱增使得這種需求越來越緊迫。
為了使資料便於人們的閱讀理解,我們需要將資訊顯示出來或者列印出來,例如將資料變成乙個html檔案,乙個pdf檔案,甚至是一段聲音;同樣,為了使資料適合不同的應用程式,我們必須有能夠將一種資料格式轉換為另一種資料格式,比如需求格式可能是乙個文字檔案,乙個sql語句,乙個http資訊,一定順序的資料呼叫等。而xslt就是我們用來實現這種轉換功能的語言。將xml轉換為html,是目前xslt最主要的功能。
1.3 xslt的歷史
想很多其他xml家族成員一樣,xslt是由w3c起草和制定的。它的主要發展歷程如下:
.2023年由james clark提議;
.2023年8月正式提案為xsl;
.2023年5月由norman walsh完成需求概要;
.2023年8月18日xsl草案發布;
.2023年11月16日正式發布xsl 1.0推薦版本。
目前,xslt仍然在快速的發展中,xslt1.1的草案已經可以在w3c**(上看到。
1.4 什麼是xpath
xpath是xslt的重要組成部分,我們將在第四章講解它的詳細語法。那麼xpath是什麼呢?我們首先來了解一下xsl系列的"家族"關係。如下圖:
xsl在轉換xml文件時分為明顯的兩個過程,第一轉換文件結構;其次將文件格式化輸出。這兩步可以分離開來並單獨處理,因此xsl在發展過程中逐漸**為xslt(結構轉換)和xsl-fo(formatting objects)(格式化輸出)兩種分支語言,其中xsl-fo的作用就類似css在html中的作用。而我們這裡重點討論的是第一步的轉換過程,也就是xslt。
另外,在學習xml時我們已經知道xml是乙個完整的樹結構文件。在轉換xml文件時可能需要處理其中的一部分(節點)資料,那麼如何查詢和定位xml文件中的資訊呢,xpath就是一種專門用來在xml文件中查詢資訊的語言。xpath隸屬xslt,因此我們通常會將xslt語法和xpath語法混在一起說。
用一種比較好理解的解釋:如果將xml文件看作乙個資料庫,xpath就是sql查詢語言;如果將xml文件看成dos目錄結構,xpath就是cd,dir等目錄操作命令的集合。
1.5 xslt和css的比較
css同樣可以格式化xml文件,那麼有了css為什麼還需要xslt呢?因為css雖然能夠很好的控制輸出的樣式,比如色彩,字型,大小等,但是它有嚴重的侷限性,就是:
(1) css不能重新排序文件中的元素;
(2) css不能判斷和控制哪個元素被顯示,哪個不被顯示;
(3) css不能統計計算元素中的資料;
換句話說,css只適合用於輸出比較固定的最終文件。css的優點是簡潔,消耗系統資源少;而xslt雖然功能強大,但因為要重新索引xml結構樹,所以消耗記憶體比較多。
因此,我們常常將它們結合起來使用,比如在伺服器端用xslt處理文件,在客戶端用css來控制顯示。可以減少響應時間。
1.6 xslt和ie5
在xslt草案發布不久,微軟就在ie4中提供了支援xsl功能的預覽版本,到ie5.0發布時,正式全面支援xslt,可是由於ie5發布的比xslt1.0標準時間早,因此在ie5.
0中支援的xstl功能和xslt 1.0略有不同。(呵呵~~xml推行的主要原因之一就是解決html過分依賴瀏覽器的問題,現在微軟又想標新立異?
)。好在微軟的ie5.5中執行的標準已經和w3c的xslt1.
0基本相近。但令人頭疼的是ie5.0已經發行了幾百萬套,您使用的xslt很可能不能被客戶的瀏覽器正確執行。
目前xslt 1.1仍在發展中,w3c及有關組織也在和微軟協商爭取獲得統一。呵呵~~故事還遠遠沒有結束噢。
注意:本文中提到的語法都是根據xslt 1.0的標準來講的,沒有任何微軟的"方言"。
xslt輕鬆入門第二章:xslt的例項
作者: 阿捷
的例項2.1 xslt如何轉換xml
2.2 乙個例項
2.3 過程解析
2.4 xslt的用途
2.1 xslt如何轉換xml
我們打個有趣的比方,你玩過橡皮泥吧,用不同的模子按上去,就可以做出需要的形狀。如果我們假設xml資料文件是一塊大橡皮泥,xslt就象是乙個模子,用力一按,就做出需要的形狀來---符合不同需要的html文件。
具體看下面的過程示意圖:
我們將xml原文件輸入,用xsl作為模板,通過轉換引擎,最終輸出需要的html文件。其中的轉換引擎就是比喻中"用力一按"的過程。在具體應用中,有專門的軟體來實現這個轉換過程,名為xml processor。
目前已經有很多 processor 軟體(下面將詳細提到),在ie5.5中也已經內嵌了xml processor。
2.2 乙個例項
現在我們來看乙個簡單的xslt實際應用例子,獲得一些感官上的認識。很多網頁設計師看到類似html的**才會放心,**是那樣的親切和熟悉。
例子1: "hello, world!"
hello world作為第乙個教程已經是程式語言中的慣例了。我們也遵守這個慣例,看看如何利用xslt來顯示"hello world"。雖然這個例子沒有什麼實際用途,但是請大家不要急,後面還有更詳細的例子。
第一步:建立要輸入xml文件
<?xml version="1.0" encoding="iso-8859-1"?>
hello, world!
這是乙個很簡單xml文件,只包含乙個節點的xml結構樹。
第二步:建立xslt文件提示:預設的xslt檔案的字尾名為.xsl。
<?xml version="1.0" encoding="iso-8859-1"?>
你現在可以用ie5.0以上版本瀏覽器開啟這個檔案,看到xsl的結構樹。
第三步:在xml中呼叫這個xsl檔案。修改的**為:
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href=""?>
hello, world!
CSTL程式設計輕鬆入門
為c 標準不可缺少的一部分,stl應該是滲透在c 程式的角角落落裡的。stl不是實驗室裡的寵兒,也不是程式設計師桌上的擺設,她的激動人心並非曇花一現。本教程旨在傳播和普及stl的基礎知識,若能藉此機會為stl的推廣做些力所能及的事情,到也是件讓人愉快的事情。1 初識stl 解答一些疑問 1.1 乙個...
輕鬆的戲不輕鬆的話題
原創驛站 福建藝術 輕鬆的戲不輕鬆的話題 童 撰文 方朝暉 公民張二狗 的劇本幾經修改,能有機會借 福建藝術 版 後有些傷感。他當時也把 公民張二狗 的提綱拿給我看,我覺面與讀者見面 我心裡十分高興這個素材本身有潛在的喜劇得這是乙個很有創意的素材 人物很有特色 有喜劇意味 建議因素,因此 我想把它處...
輕鬆學語文
作者 李偉 課程教育研究 下 2014年第07期 摘要 作為 萬眾矚目 的母語課程,語文教學從來都不缺乏與時俱進的改革與變化。而當 對話教學 本色語文 等口號衝擊著當今語文教學時,語文教學迎來了 輕裝上陣 回到原點 的教學理念。但是 從簡 應是用語文的方式教語文,決不可以忽略教學的質量,進行課堂教學...