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