曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
由一種模式選定,該模式會考慮元素的名稱和值、元素的屬性名和值以及在XML 文檔樹狀結(jié)構(gòu)中的絕對和相對位置等等。數(shù)
據(jù)一經(jīng)從一個(gè)元素中取出,就可以移動、復(fù)制和經(jīng)過其他多種處理。在這個(gè)簡要的介紹中描述了使用XML 變換部分所能做的
事情。讀者將學(xué)到使用XSL 編寫一些能夠立即在網(wǎng)上看到的令人吃驚的文檔。
在第14 章的“XSL 變換”中對XSL 的變換作了徹底的闡述。
5.4.2 文檔的主體
請看下面的簡單例子,并把它應(yīng)用于清單5-1 所示的棒球統(tǒng)計(jì)的XML 文檔中,清單5-2 是一個(gè)XSL 樣式單。它提供XML 數(shù)據(jù)
將要注入的HTML“模子”。
清單5-2:一個(gè)XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
XML 實(shí)用大全
第 102 頁
<HEAD>
<TITLE>
Major League Baseball Statistics
</TITLE>
</HEAD>
<BODY>
<H1>Major League Baseball Statistics</H1>
<HR></HR>
Copyright 1999
<A HREF="http://www.macfaq.com/personal.html">
Elliotte Rusty Harold
</A>
<BR />
<A HREF="mailto:elharo@metalab.unc.edu">
elharo@metalab.unc.edu
</A>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
該清單像一個(gè)包含在XSL:template 元素中的HTML 文件,也就是說它的結(jié)構(gòu)更像是這樣:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
XML 實(shí)用大全
第 103 頁
HTML file goes here
</xsl:template>
</xsl:stylesheet>
清單5-2 不僅是一個(gè)XSL 樣式單,同樣是一個(gè)結(jié)構(gòu)完整的HTML 文檔。它以一個(gè)XML 名稱開始,文檔的根元素是
xsl:stylesheet。該樣式單包含唯一的模板,把XML 數(shù)據(jù)編碼為一個(gè)xsl:template 元素。xsl:template 元素有一個(gè)match
屬性,其值為/,內(nèi)容是一個(gè)結(jié)構(gòu)完整的HTML 文檔。輸出的HTML 結(jié)構(gòu)完整不是一種巧合。因?yàn)镠TML 首先必須是一個(gè)XSL
樣式單的一部分,并且XSL 樣式單是結(jié)構(gòu)完整的XML 文檔,因此在一個(gè)XSL 樣式單中的所有HTML 一定結(jié)構(gòu)完整。
Web 瀏覽器盡量使XML 文檔各部分與每個(gè)xsl:template 元素相匹配。/模板與文檔的根即整個(gè)文檔本身相匹配。瀏覽器讀
取模板并將來自XML 中的數(shù)據(jù)插入XSL 指令指明的位置。但是該特定模板不包含XSL 指令。因此它的內(nèi)容只是被逐字逐句地
復(fù)制到Web 瀏覽器中,產(chǎn)生如圖5-4 所示的輸出結(jié)果。請注意該圖不顯示XML 文檔的任何數(shù)據(jù),只顯示XSL 模板中的數(shù)據(jù)。
把清單5-2 中的XSL 樣式單與清單5-1 中的XML 文檔連接起來很方便,只需增加一個(gè)<?XML-stylesheet?>處理指令,該指令
位于XML 聲明和根元素之間,含有一個(gè)值為text/xsl 的type 屬性和一個(gè)指向樣式單的href 屬性。例如:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="5-2.xsl"?>
<SEASON YEAR="1998">
...
這與在文檔上連接CSS 樣式單的方法一樣,唯一不同的是type 屬性的值為text/xsl 而不是text/css。
圖5-4 采用清單5-2 中XSL 樣式單后,XML 文檔中的數(shù)據(jù)而不是XSL 模板中的數(shù)據(jù)消失了
XML 實(shí)用大全
第 104 頁
5.4.3 標(biāo)題
圖5-4 很明顯丟失了數(shù)據(jù)。盡管清單5-2 中的樣式單顯示了一些內(nèi)容(與圖5-3 所示的CSS 樣式單不同),但是它沒有顯示
XML 文檔中的任何數(shù)據(jù)。要添加這些數(shù)據(jù)需要使用XSL 指令元素把XML 源文檔中的數(shù)據(jù)復(fù)制到XSL 模板中。清單5-3 增加了
必要的XSL 指令,從SEASON 元素中抽取YEAR 屬性并把它插入到結(jié)果文檔的TITLE 和H1 標(biāo)頭之間。圖5-5 顯示了處理后的
文檔。
清單5-3:一個(gè)含有抽取SEASON 元素和YEAR 屬性指令的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<HEAD>
<TITLE>
<xsl:for-each select="SEASON">
<xsl:value-of select="@YEAR"/>
</xsl:for-each>
Major League Baseball Statistics
</TITLE>
</HEAD>
<BODY>
<xsl:for-each select="SEASON">
<H1>
<xsl:value-of select="@YEAR"/>
Major League Baseball Statistics
</H1>
</xsl:for-each>
<HR></HR>
XML 實(shí)用大全
第 105 頁
Copyright 1999
<A HREF="http://www.macfaq.com/personal.html">
Elliotte Rusty Harold
</A>
<BR />
<A HREF="mailto:elharo@metalab.unc.edu">
elharo@metalab.unc.edu
</A>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
下面的新XSL 指令能夠從SEASON 元素中抽取YEAR 屬性。
<xsl:for-each select="SEASON">
<xsl:value-of select="@YEAR"/>
</xsl:for-each>
圖5-5 清單5-1 采用清單5-3 所示的XSL 樣式單后的顯示結(jié)果
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(35)