曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
<xsl:template match=”/”>
<html>
<head>
<title>Atomic Number vs. Atomic Weight</title>
</head>
<body>
<xsl:apply-templates select=”PERIODIC_TABLE”/>
</body>
</html>
</xsl:template>
<xsl:template match=”PERIODIC_TABLE”>
<hl>Atomic Number vs. Atomic Weight</hl>
<table>
<th>Element</th>
<th>Atomic Number</th>
<th>Atomic Weight</th>
<xsl:apply-templates select=”ATOM”/>
</table>
</xsl:template>
<xsl:template match=”ATOM”>
XML 實(shí)用大全
第 468 頁
<tr>
<td><xsl:value-of select=”NAME”/></td>
<td><xsl:value-of select=”ATOMIC_NUMBER”/></td>
<td><xsl:value-of select=”ATOMIC_WEIGHT”/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
圖14-4 Netscape Navigator 4.5 中顯示的原子序數(shù)與原子量的關(guān)系表
14.6.3 使用/字符匹配子節(jié)點(diǎn)
在match 特性中并不局限于當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn),可使用/符號來匹配指定的元素后代。當(dāng)單獨(dú)使用/符號時(shí),它表示引用根節(jié)
點(diǎn)。但是,在兩個(gè)名稱之間使用此符號時(shí),表示第二個(gè)是第一個(gè)的子代。例如,ATOM/NAME 引用NAME 元素,NAME 元素為ATOM
元素的子元素。
在xsl:template 元素中,這種方法能夠用來只與某些給定類型的元素進(jìn)行匹配。例如,下面的模板規(guī)則將ATOM 子元素的
SYMBOL 元素標(biāo)記為strong。此規(guī)則與不是ATOM 元素的直系子元素的SYMBOL 元素?zé)o關(guān)。
<xsl:template match="ATOM/SYMBOL">
<strong><xsl:value-of select="."/></strong>
XML 實(shí)用大全
第 469 頁
</xsl:template>
請記住,本規(guī)則選擇的是作為ATOM 元素子元素的SYMBOL 元素,而不是選擇擁有SYMBOL 子元素的ATOM 元素。換句
話說,在<xsl:value-of select="."/>中的.符號引用的是SYMBOL,而不是ATOM。
將模式寫成一行的形成,就可以指定更深層的匹配。例如,PERIODIC_TABLE / ATOM / NAME 選擇的是其父為ATOM 元素(其
父為PERIODIC_TABLE 元素)的NAME 元素。
還可以使用*通配符來代替層次結(jié)構(gòu)中的任意元素名。例如,下面的模板規(guī)則應(yīng)用于PERIODIC_TABLE 孫元素的所有SYMBOL
元素。
<xsl:template match="PERIODIC_TABLE/*/SYMBOL">
<strong><xsl:value-of select="."/></strong>
</xsl:template>
最后一點(diǎn),就如上面所看到的那樣,單獨(dú)的/本身,表示選擇文檔的根節(jié)點(diǎn)。例如,下面的規(guī)則應(yīng)用于文檔根元素的所有
PERIODIC_TABLE 元素。
<xsl:template match="/PERIODIC_TABLE">
<html><xsl:apply templates/></html>
</xsl:template>
雖然 / 引用根節(jié)點(diǎn),但/* 則引用任意根元素。例如,
<xsl:template match="/*">
<html>
<head>
<title>Atomic Number vs. Atomic Weight</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
XML 實(shí)用大全
第 470 頁
</xsl:template>
14.6.4 使用//符號匹配子代
有時(shí)候,尤其是使用不規(guī)則的層次時(shí),更容易的方法就是越過中間節(jié)點(diǎn)、只選擇給定類型的所有元素而不管這些元素是不是
直系子、孫、重孫或其他所有的元素。雙斜杠(//)引用任意級別的后代元素。例如,下面的模板規(guī)則應(yīng)用于PERIODIC_TABLE
的所有NAME 子代,而不管它們具有何種層次的關(guān)系:
<xsl:template match=" PERIODIC_TABLE //NAME">
<i><xsl:value-of select="."/></i>
</xsl:template>
周期表實(shí)例相當(dāng)簡單,一看就懂,但這種技巧在更深層次,尤其是當(dāng)元素包含該類的其他元素時(shí)(例如ATOM 包含ATOM),
就顯得更加重要。
模式開頭的操作符選擇根節(jié)點(diǎn)的任何子節(jié)點(diǎn)。例如,下面的模板規(guī)則處理所有的ATOMIC_NUMBER 元素,而同時(shí)完全忽略其位
置:
<xsl:template match="// ATOMIC_NUMBER ">
<i><xsl:value-of select="."/></i>
</xsl:template>
14.6.5 通過ID 匹配
有人或許想把一特定的樣式應(yīng)用于特定的單一元素中,而不改變該類型的所有其他元素。在XSL 中實(shí)現(xiàn)此目的的最簡單的方
法是,將樣式與元素的ID 匭韻喙亓 ?墑褂胕d()選擇符(其中包括以單引號括起來的ID 值)做到這一點(diǎn)。例如,下面的
規(guī)則使帶有ID 值為e47 的元素變?yōu)榇煮w:
<xsl:template match=”id(‘e47’)”>
<b><xsl:value-of select=”.”/></b>
</xsl:template>
當(dāng)然,上面假設(shè)以此方式選擇的元素具有在源文檔的DTD 中聲明為ID 類型的特性。但是,通常情況并非如此。首先,許多
文檔沒有DTD,只不過結(jié)構(gòu)整潔,但不合法。即使有DTD,也無法確保任何元素都有ID 類型的特性。可以在樣式單中使用
xsl:key 元素,用來把輸入文檔中的特定特性聲明為應(yīng)該作為ID 來看待。
14.6.6 使用@來匹配特性
正如第5 章已經(jīng)看到的那樣,@符號根據(jù)特性名與特性相匹配,并選擇節(jié)點(diǎn)。方法很簡單,只需在要選擇的特性前加上@符號。
例如,清單14-8 顯示一樣式單,用它來輸出一張?jiān)有驍?shù)和熔點(diǎn)對照的表格。不僅寫出了MELTING_POINT 的值,而且也寫
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(132)