曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專(zhuān)營(yíng)店坑蒙拐騙欺詐消費(fèi)者
文檔變換成客戶(hù)端能夠理解的XML 應(yīng)用程序。盡管將來(lái)有些瀏覽器很可能能夠處理XSL 格式化對(duì)象,但HTML 是很有希望的
選擇方案。
XML 實(shí)用大全
第 454 頁(yè)
將XSL 樣式單與XML 文檔相鏈接是很容易的,只需要緊跟在XML 聲明之后插入序言中的xml-stylesheet 處理指令。這種處
理指令應(yīng)有text/xsl 值的type 特性,以及其值為指向此樣式單的URL 的href 特性。例如:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="14-2.xsl"?>
這也是將CSS 樣式單與文檔鏈接的方法。這里的唯一區(qū)別是type 特性具有text/xsl 值,而不是text/css 值。
Internet Explorer 5.0 的XSL 支持在許多方面與1999 年4 月21 日制定的草案有差異。首先,它期望XSL 元素放在
http://www.w3.org/TR/WD-xsl 命名域中,而不是http://www.w3.org/XSL/Transform/1.0 命名域,盡管xsl 前綴仍然使用。
其次,當(dāng)元素不與任何模板相匹配時(shí),并不執(zhí)行此元素的缺省規(guī)則。因此,在Internet Explorer 中瀏覽文檔時(shí),需要從根
元素開(kāi)始為分級(jí)結(jié)構(gòu)中的每個(gè)元素提供一個(gè)模板。清單14-4 顯示了這種情況。三條規(guī)則依次與根節(jié)點(diǎn)、根元素
PERIODIC_TABLE 和ATOM 相匹配。圖14-3 顯示的是使用此樣式單將清單14-1 加載到Internet Explorer 5.0 中之后的XML
文檔。
清單14-4:將清單14-2 調(diào)整為可在Internet Explorer 5.0 下運(yùn)行的樣式單
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="PERIODIC_TABLE">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ATOM">
<P>
<xsl:value-of select="."/>
</P>
</xsl:template>
XML 實(shí)用大全
第 455 頁(yè)
</xsl:stylesheet>
圖14-3 將清單14-4 中調(diào)整過(guò)的XSL 樣式單應(yīng)用于清單14-1 中的XML 文檔, 在Internet Explorer 5.0 中生成的頁(yè)面
理想的情況是,相同的XML 文檔既可用于直接顯示也可以預(yù)處理成HTML。不幸的是,XT 不接受http://www.w3.org/TR/WD-xsl
命名域,而IE 5 不接受http://www.w3.org/XSL/Transform/1.0 命名域。 由于不同的處理程序在對(duì)改進(jìn)的XSL 規(guī)范各部分
的支持方面起到各有所長(zhǎng)的作用,所以我們?nèi)匀惶幱谶@種痛苦的境地。
在本章剩下來(lái)的部分,在將文檔裝入瀏覽器之前,我將把它簡(jiǎn)單地預(yù)處理成HTML 格式。
XML 實(shí)用大全
第 456 頁(yè)
14.3 XSL 模板
由xsl:template 元素定義的模板規(guī)則是XSL 樣式單的最重要的部分。每個(gè)模板規(guī)則都是一個(gè)xsl:template 元素。這些規(guī)則
將特定的輸出與特定的輸入相關(guān)聯(lián)。每個(gè)xsl:template 元素都有一個(gè)match 特性,用來(lái)指定要將此模板應(yīng)用于輸入文檔的
哪個(gè)節(jié)點(diǎn)。
xsl:template 元素的內(nèi)容是要運(yùn)用的實(shí)際模板。模板可能既包含逐字顯示在輸出文檔中的文本,同時(shí)也包含從輸入XML 文
檔將數(shù)據(jù)復(fù)制到結(jié)果的XSL 指令。因?yàn)樗械腦SL 指令都放在xsl 命名域中(即它們都是以xsl:開(kāi)頭),所以要區(qū)分元素
(這些元素就是復(fù)制到輸出的實(shí)際數(shù)據(jù))和XSL 指令是很容易的。例如,下面為一個(gè)應(yīng)用于輸入樹(shù)形結(jié)構(gòu)根節(jié)點(diǎn)的模板:
<xsl:template match=”/”>
<html>
<head>
</head>
<body>
</body>
</html>
</xsl:template>
當(dāng)XSL 處理程序讀取此輸入文檔時(shí),它所看到的第一個(gè)節(jié)點(diǎn)就是根節(jié)點(diǎn)。下面的規(guī)則與此根節(jié)點(diǎn)相匹配,并告訴XSL 處理程
序發(fā)送此文本:
<html>
<head>
</head>
<body>
</body>
</html>
這種文本就是結(jié)構(gòu)整潔的HTML。由于XSL 文檔本身就是XML 文檔,所以其內(nèi)容(包括模板在內(nèi))也必須是結(jié)構(gòu)整潔的XML。
如果要在XSL 樣式單中使用上面的規(guī)則,并且只在XSL 樣式單中使用的話(huà),那么輸出就只限于上面的六個(gè)標(biāo)記。(實(shí)際上,
可壓縮為四個(gè)等價(jià)的標(biāo)記:<html> <head/> <body/> </html>)。這是由于在規(guī)則中沒(méi)有任何指令告訴格式化程序沿樹(shù)形結(jié)
構(gòu)逐級(jí)下移,以便尋找與樣式單中的模板進(jìn)一步的匹配。
14.3.1 xsl:apply-templates 元素
XML 實(shí)用大全
第 457 頁(yè)
要達(dá)到根節(jié)點(diǎn)以外的地方,就要告訴格式化引擎處理根節(jié)點(diǎn)的子節(jié)點(diǎn)。一般來(lái)說(shuō),為了包括子節(jié)點(diǎn)中的內(nèi)容,需遞歸處理整
個(gè)XML 文檔中的節(jié)點(diǎn)。可以用來(lái)達(dá)到此目的的元素就是xsl:apply-templates。把xsl:apply-templates 放在輸出模板中,
就可以告訴格式化程序把與源元素匹配的每個(gè)子元素同樣式單中的模板相比較。用于匹配節(jié)點(diǎn)的模板本身可能包含
xsl:apply-templates 元素,以便搜索與其子節(jié)點(diǎn)的匹配。當(dāng)格式化引擎處理節(jié)點(diǎn)時(shí),此節(jié)點(diǎn)是作為整個(gè)樹(shù)形結(jié)構(gòu)來(lái)看待的。
這是樹(shù)形結(jié)構(gòu)的優(yōu)點(diǎn)所在。每個(gè)部分都是以處理整體相同的方式來(lái)處理。例如,清單14-5 就是使用xsl:apply-templates
元素來(lái)處理子節(jié)點(diǎn)的XSL 樣式單。
清單14-5:遞歸處理根下子節(jié)點(diǎn)的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="PERIODIC_TABLE">
<body>
<xsl:apply-templates/>
</body>
</xsl:template>
中國(guó)航空網(wǎng) m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(129)