因為最近要實現(xiàn)XML轉(zhuǎn)HTML的功能!所以研究了一下XSL技術(shù)!感覺還不錯!這里與大家分享!希望對XSL新手有幫助!
下面的概念將說的有點大,(如果比較暈的話就別看了!直接跳到星號線以下)什么是XSL :
可擴(kuò)展的樣式語言(Extensible Style Language,XSL)包括變換語言(transformation language)和格式化語言(formatting
language)。每種語言都是一個XML應(yīng)用程序。變換語言提供定義規(guī)則的元素如何將XML文檔變換成另一個XML文檔。被變換的XML文檔可能使用原文檔的標(biāo)記和DTD,或者使用一組完全不同的標(biāo)記。
實際上,XSL是兩種語言,而不是一種。第一種語言是變換語言,第二種是格式化語言。變換語言是一種很有用的語言,它與格式化語言無關(guān)。它能夠把數(shù)據(jù)從一種XML表示移到另一種表示,這種功能,使它成為基于XML的電子商務(wù)、電子數(shù)據(jù)交換、元數(shù)據(jù)交換以及應(yīng)用于需要在相同數(shù)據(jù)的不同XML表示之間進(jìn)行轉(zhuǎn)換的重要組成部分。由于缺乏對人們要瀏覽的顯示器上顯示數(shù)據(jù)的了解,這些用途還要結(jié)合起來使用。它們純粹是用來將數(shù)據(jù)從一種計算機(jī)系統(tǒng)或程序移到另一種計算機(jī)系統(tǒng)或程序中。
XML基礎(chǔ) :
眾所周知:每個結(jié)構(gòu)整潔的XML文檔都是樹形結(jié)構(gòu)(tree)。樹形結(jié)構(gòu)是一種數(shù)據(jù)結(jié)構(gòu),它是由連接起來的節(jié)點(node)組成的,這些節(jié)點起始于一個稱為根節(jié)點(root)的單節(jié)點。根節(jié)點連接它的子節(jié)點,每個子節(jié)點可以連接零個或多個它自己的子節(jié)點,依次類推。沒有自己的子節(jié)點的節(jié)點稱為葉節(jié)點(leave)。樹形結(jié)構(gòu)的圖表更像家譜,列出各個先輩的后代。樹形結(jié)構(gòu)最有用的特征是每個節(jié)點及其子節(jié)點也會形成樹形結(jié)構(gòu)。因此,一個樹形結(jié)構(gòu)就是所有樹形結(jié)構(gòu)的分級結(jié)構(gòu),在此分級結(jié)構(gòu)中,各樹形結(jié)構(gòu)都是由更小的樹形結(jié)構(gòu)建立的。
正因為XML有這樣的特征,對于XSL,特性,命名域(namespace),處理指令以及注釋必須也作為節(jié)點看待.而且文檔的根節(jié)點必須與根(基本)元素區(qū)別開來.因此,XSL處理程序假定XML數(shù)形結(jié)構(gòu)包含下列七類節(jié)點 :根節(jié)點,元素,文本,特性,命名域,處理指令,注釋;
**************************************************************************************************************************
概述一下就是:?? 在XSL變換中,XSL處理程序讀取XML文檔和XSL樣式單。基于處理程序在XSL樣式單中找到的指令,輸出新的XML文檔。
實際上在使用中頻率最高的就是將一段XML通過XSL轉(zhuǎn)化為HTML,然后再頁面輸出.特別是在一些需要用到模板頁面的項目中,XSL的用處是比較大的!
最快的學(xué)習(xí)莫過于看實例,下面我就基于XSL最簡單的語法寫一個XSL的"Hello world"!呵呵!
假定現(xiàn)在有一段這樣的XML:
?1?<!--XML?Example-->
?2?<root?value="選擇你喜歡的搜索引擎">
?3?<item?href="http://www.baidu.com">
?4?百度
?5?</item>
?6?<item?href="http://www.google.com">
?7?Google
?8?</item>
?9?</root>
10?
根據(jù)XML和將要顯示的頁面樣式,定義XSL文件:
<!--?自定義的XSL文件-->
<?xml?version="1.0"?encoding="UTF-8"??>
<xsl:stylesheet?version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output?method="html"?encoding="UTF-8"?/>
<xsl:template?match="root">
<!--?這里用來寫將要顯示在頁面上的HTML代碼-->
<table>
<tr>
<xsl:value-of?select="@value"?/>
</tr>
<xsl:for-each>
<tr>
<a?href="{item/@href}">
<xsl:value-ofselect="item"/>
</a>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
???
轉(zhuǎn)換后生成的頁面效果:

最后,我簡單解釋一下上述XSL中用到的XSL語法:
<xsl:value-of select="@value" />:?????????? 取XML文件中<root>節(jié)點的value屬性值;
{item/@href}:??????????????????? ? ? ? ? ?? 取XML文件中<root>根節(jié)點下<item>的href屬性值;
<xsl:value-of select="item"/>:???????????? 取XML文件中<root>根節(jié)點下<item>的內(nèi)容;
<xsl:for-each></xsl:for-each>:????????????? 循環(huán)執(zhí)行標(biāo)簽體內(nèi)容;
關(guān)于XSL的語法的是和應(yīng)用還有很多例子,我會在今后的文章中給出,歡迎大家指點!謝謝!
預(yù)告:XSL初體驗(二)-XSL常用語法
???
???