主頁(yè) > 知識(shí)庫(kù) > XSLT輕松入門(mén)第二章:XSLT的實(shí)例

XSLT輕松入門(mén)第二章:XSLT的實(shí)例

熱門(mén)標(biāo)簽:東營(yíng)電銷(xiāo) 南寧網(wǎng)絡(luò)外呼系統(tǒng)運(yùn)營(yíng)商 微信地圖標(biāo)注合并了 400電話辦理包年 高德地圖地圖標(biāo)注服務(wù)中心 隨州外呼調(diào)研系統(tǒng) r語(yǔ)言數(shù)據(jù)可視化地圖標(biāo)注 本地電話機(jī)器人 如何修改多個(gè)百度地圖標(biāo)注

2. XSLT的實(shí)例

2.1 XSLT如何轉(zhuǎn)換XML
2.2 一個(gè)實(shí)例
2.3 過(guò)程解析
2.4 XSLT的用途

2.1 XSLT如何轉(zhuǎn)換XML

我們打個(gè)有趣的比方,你玩過(guò)橡皮泥吧,用不同的模子按上去,就可以做出需要的形狀。如果我們假設(shè)XML數(shù)據(jù)文檔是一塊大橡皮泥,XSLT就象是一個(gè)模子,用力一按,就做出需要的形狀來(lái)---符合不同需要的HTML文檔。

具體看下面的過(guò)程示意圖:



我們將XML原文檔輸入,用XSL作為模板,通過(guò)轉(zhuǎn)換引擎,最終輸出需要的HTML文檔。其中的轉(zhuǎn)換引擎就是比喻中"用力一按"的過(guò)程。在具體應(yīng)用中,有專(zhuān)門(mén)的軟件來(lái)實(shí)現(xiàn)這個(gè)轉(zhuǎn)換過(guò)程,名為XML Processor。目前已經(jīng)有很多 Processor 軟件(下面將詳細(xì)提到),在IE5.5中也已經(jīng)內(nèi)嵌了XML Processor。

2.2 一個(gè)實(shí)例


 


現(xiàn)在我們來(lái)看一個(gè)簡(jiǎn)單的XSLT實(shí)際應(yīng)用例子,獲得一些感官上的認(rèn)識(shí)。很多網(wǎng)頁(yè)設(shè)計(jì)師看到類(lèi)似HTML的代碼才會(huì)放心,代碼是那樣的親切和熟悉。


 

例子1: "Hello, world!"

hello world作為第一個(gè)教程已經(jīng)是程序語(yǔ)言中的慣例了。我們也遵守這個(gè)慣例,看看如何利用XSLT來(lái)顯示"hello world"。雖然這個(gè)例子沒(méi)有什么實(shí)際用途,但是請(qǐng)大家不要急,后面還有更詳細(xì)的例子。

第一步:建立要輸入XML文檔hello.xml。


 

?xml version="1.0" encoding="iso-8859-1"?>

greeting>Hello, world!/greeting>


 

這是一個(gè)很簡(jiǎn)單XML文檔,只包含一個(gè)節(jié)點(diǎn)的XML結(jié)構(gòu)樹(shù)。

第二步:建立XSLT文檔hello.xsl。提示:默認(rèn)的XSLT文件的后綴名為.xsl。


 

?xml version="1.0" encoding="iso-8859-1"?>

xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

xsl:template match="/">

html>

head>

title>First XSLT example/title>

/head>

body>

p>xsl:value-of select="greeting"/>/p>

/body>

/html>

/xsl:template>

/xsl:stylesheet>


 

你現(xiàn)在可以用IE5.0以上版本瀏覽器打開(kāi)這個(gè)hello.xsl文件,看到XSL的結(jié)構(gòu)樹(shù)。

第三步:在XML中調(diào)用這個(gè)XSL文件。修改hello.xml的代碼為:


 

?xml version="1.0" encoding="iso-8859-1"?>

?xml-stylesheet type="text/xsl" href="hello.xsl"?>

greeting>Hello, world!/greeting>


 

ok,到這一步原理上已經(jīng)完成了所有的代碼,接下來(lái)只要用一個(gè)XSLT的處理器(XML Processor)來(lái)執(zhí)行hello.xml就可以看到"hello
world"的顯示結(jié)果了。流行的處理器軟件有以下幾種:

(1).James Clark的XT。下載網(wǎng)址:http://www.jclark.com/xml/xt.html

(2).IBM的XML for Java軟件包,名為L(zhǎng)otusXSL。下載網(wǎng)址:www.alphaworks.ibm.com/tech/xml4j

(3).Saxon。下載網(wǎng)址:http://www.wrox.com

(4).微軟的MSXML3。下載網(wǎng)址:http://www.microsoft.com/xml


 

有網(wǎng)友要問(wèn),我想在瀏覽器中看到"hello world"的效果應(yīng)該怎么做?在微軟的IE5.5內(nèi)嵌了MSXML3解釋器,你可以用IE5.5打開(kāi)hello.xml文件,就可以看到結(jié)果。如果只看到XML結(jié)構(gòu)樹(shù),不是單獨(dú)的"hello
world"字樣,說(shuō)明你的瀏覽器沒(méi)有安裝MSXML3版本。

如果沒(méi)有安裝又想看效果怎么辦?那還是用我們?cè)赬ML教程中的老辦法,采用JS實(shí)現(xiàn)。(這已經(jīng)超出了本文要講的范圍,但為了更加直觀,便于理解,我們?cè)谶@里提供實(shí)例代碼。)下面是一種實(shí)現(xiàn)的代碼,可以保存為hello.htm,和上面的hello.xml,hello.xsl放在同一目錄下面。最后用IE5.0以上版本打開(kāi)hello.htm就可以看到效果了。


 

html>

head>

script language="JavaScript" for="window" event="onload">

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async="false";

xmlDoc.load("hello.xml");

nodes = xmlDoc.documentElement.childNodes;

greeting.innerText = nodes.item(0).text;

/script>

title>First XSLT Example/title>

/head>

body bgcolor="#FFFFFF">

span id="greeting">/span>br>

/body>

/html>

2.3 過(guò)程解析


 

如果你成功的看到效果,你也許想知道這些代碼的具體含義,我們來(lái)詳細(xì)解說(shuō):看hello.xsl文件


 

?xml version="1.0" encoding="iso-8859-1"?>


 

這是標(biāo)準(zhǔn)的XML文檔的首行代碼,因?yàn)閄SLT本身也是XML文檔。encoding屬性用來(lái)定義文檔使用的編碼形式,iso-8859-1主要支持西歐和北美的語(yǔ)言編碼。如果你想使用簡(jiǎn)體中文,那么就應(yīng)該寫(xiě)成:


 

?xml version="1.0" encoding="GB2312"?>


 

接下去的代碼是:


 

xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">


 

這是標(biāo)準(zhǔn)的XSLT文件首行代碼。xsl:stylesheet代碼的意思是將文檔作為一個(gè)樣式表來(lái)(stylesheet)處理。xmlns:xsl屬性是一個(gè)名字空間聲明,和XML中的名字空間使用方法一樣,用來(lái)防止元素名稱(chēng)重復(fù)和混亂。其中前綴xsl的意思是文檔中使用的元素遵守W3C的XSLT規(guī)范。最后的version屬性說(shuō)明樣式表只采用XSLT
1.0的標(biāo)準(zhǔn)功能,這也是目前僅有的標(biāo)準(zhǔn)。


 

xsl:template match="/">


 

一個(gè)xsl:template>元素定義一個(gè)模板規(guī)則。屬性match="/"說(shuō)明XML源文檔中,這個(gè)模板規(guī)則作用的起點(diǎn)。"/"是一種XPath語(yǔ)法,我們?cè)诤竺鎸⒃敿?xì)講述,這里的"/"代表XML結(jié)構(gòu)樹(shù)的根(root)。


 

接下去的代碼是:


 

html>

head>

title>First XSLT Example/title>

/head>

body>

p>xsl:value-of select="greeting"/>/p>

/body>

/html>


 

說(shuō)明:當(dāng)模板規(guī)則被觸發(fā),模板的內(nèi)容就會(huì)控制輸出的結(jié)果。例子中,模板大部分內(nèi)容由HTML元素和文本構(gòu)成。只有xsl:value-of>元素是XSLT語(yǔ)法,這里xsl:value-of>的作用是拷貝原文檔中的一個(gè)節(jié)點(diǎn)的值到輸出文檔。而select屬性則詳細(xì)指定要處理的節(jié)點(diǎn)名稱(chēng)。這是XPath語(yǔ)法,"greeting"的意思就是尋找根節(jié)點(diǎn)名為greeting的元素,并用模板來(lái)處理這個(gè)節(jié)點(diǎn)。具體的就是找到greeting>元素,然后將元素的值"hello
world"按模板樣式拷貝到輸出文件。

提示:由于XML文檔是嚴(yán)格的層級(jí)結(jié)構(gòu)(用IE5查看XML文件,會(huì)看見(jiàn)XML文檔類(lèi)似多級(jí)關(guān)聯(lián)菜單),所以我們形象的稱(chēng)XML文檔為文檔樹(shù),其中每一對(duì)元素稱(chēng)作樹(shù)的一個(gè)節(jié)點(diǎn)。根元素就是根節(jié)點(diǎn)。


 

最后關(guān)閉所有元素:


 

/xsl:template>

/xsl:stylesheet>


 

好,例子解說(shuō)完畢。你是否想過(guò)為什么要用這么復(fù)雜的方法來(lái)顯示"hello world"呢?

關(guān)鍵不在表面,而在于實(shí)質(zhì):用這種方法,hello world可以從XML文檔中被提取出來(lái),并用各種不同的XSLT模板處理,來(lái)輸出不同需求的文檔。我們來(lái)看看XSLT的主要用途:


 


 

2.4 XSLT的用途


 

XSLT的主要用途就是數(shù)據(jù)轉(zhuǎn)換應(yīng)用。

由于以XML為基礎(chǔ)的電子商務(wù)廣泛普及,XSLT作為數(shù)據(jù)轉(zhuǎn)換的角色也越來(lái)越重要。例如直接將電視新聞的數(shù)據(jù)格式轉(zhuǎn)換成報(bào)紙新聞需要的數(shù)據(jù)格式;將股票數(shù)據(jù)直接轉(zhuǎn)換成圖片顯示在網(wǎng)頁(yè)上;對(duì)EDI(電子數(shù)據(jù)交換)數(shù)據(jù)進(jìn)行統(tǒng)計(jì),排序等等。

XSLT是處理類(lèi)似工作的理想工具。

您可能感興趣的文章:
  • python使用xslt提取網(wǎng)頁(yè)數(shù)據(jù)的方法
  • 使用Python下的XSLT API進(jìn)行web開(kāi)發(fā)的簡(jiǎn)單教程
  • 一個(gè)用xslt樣式將xml解析為xhtml的類(lèi)TransformBinder(兼容FF和IE7.0)
  • 用xslt將xml解析成xhtml的代碼
  • python提取字典key列表的方法
  • Python實(shí)現(xiàn)從url中提取域名的幾種方法
  • python利用正則表達(dá)式提取字符串
  • python使用正則表達(dá)式提取網(wǎng)頁(yè)URL的方法
  • Python進(jìn)行數(shù)據(jù)提取的方法總結(jié)
  • 1分鐘快速生成用于網(wǎng)頁(yè)內(nèi)容提取的xslt

標(biāo)簽:果洛 宿遷 西雙版納 黃石 寧夏 拉薩 德州 益陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《XSLT輕松入門(mén)第二章:XSLT的實(shí)例》,本文關(guān)鍵詞  XSLT,輕松,入門(mén),第二章,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《XSLT輕松入門(mén)第二章:XSLT的實(shí)例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于XSLT輕松入門(mén)第二章:XSLT的實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章