曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
出了UNITS 特性的值。這是由于<xsl :value-of select="@UNITS"/>所獲得的結(jié)果。
XML 實用大全
第 471 頁
清單14-8:使用@來選擇UNITS 特性的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/PERIODIC_TABLE">
<html>
<body>
<hl>Atomic Number vs. Melting Point</hl>
<table>
<th>Element</th>
<th>Atomic Number</th>
<th>Melting Point</th>
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="ATOM">
<tr>
<td><xsl:value-of select="NAME"/></td>
<td><xsl:value-of select="ATOMIC_NUMBER"/></td>
<td><xsl:apply-templates select="MELTING_POINT"/></td>
</tr>
</xsl:template>
XML 實用大全
第 472 頁
<xsl:template match="MELTING_POINT">
<xsl:value-of select="." />
<xsl:value-of select="@UNITS"/>
</xsl:template>
</xsl:stylesheet>
回想一下,特性節(jié)點的值只是此特性的字符串值。一旦應(yīng)用清單14-8 中的樣式單,ATOM 元素就會格式化成如下形成:
<tr><td>Hydrogen</td><td>l</td><td>13.8lKelvin</td></tr>
<tr><td>Helium</td><td>2</td><td>0.95Kelvin</td></tr>
可以使用各種層次操作符將特性與元素組合起來。例如,BOILING_POINT/@UNITS 引用BOILING_POINT 元素的UNITS 特性。
ATOM/*/@UNITS 就能匹配ATOM 子元素的任何UNITS 元素。當(dāng)與模板規(guī)則中的特性匹配時,這種做法是特別有用的。必須記
住,要匹配的是特性節(jié)點,而不是包含它的元素。最常見的錯誤是,不知不覺地將特性節(jié)點與包含它的元素節(jié)點搞混淆。例
如,請看下面的規(guī)則,它試圖將模板應(yīng)用于具有UNITS 特性的所有子元素:
<xsl:template match="ATOM">
<xsl:apply-templates select="@UNITS"/>
</xsl:template>
上面語句實際上做的是,將模板應(yīng)用于ATOM 元素中并不存在的UNITS 特性。
也可以使用*來選擇元素的所有特性,例如,BOILING_POINT/@*可選擇BOILING_POINT 元素的所有特性。
14.6.7 使用comments()來匹配注釋
大多數(shù)時候,可能應(yīng)該完全忽略XML 文檔中的注釋。要使注釋成為文檔的必不可少的部分,確實不是好主意。但是,當(dāng)不得
不選擇注釋時,XSL 確實提供了選擇注釋的手段。
為了選擇注釋,可使用comment()模式。盡管此模式有類似函數(shù)的圓括號,但實際上決不帶任何參數(shù)。要區(qū)分不同的注釋不
太容易。例如,回想一下DENSITY 元素具有如下的形式:
<DENSITY UNITS=”grams/cubic centimeter”><!- At 300K ->
6.51
</DENSITY>
此模板規(guī)則不僅輸出密度的值和單位,而且還打印測量密度的條件:
XML 實用大全
第 473 頁
<xsl:template match=”DENSITY”>
<xsl:value-of select=”.”/>
<xsl:value-of select=”@UNITS”/>
<xsl:apply-templates select=”comment()”/>
</xsl:template>
清單14-1 使用注釋而不是特性或元素來指定條件,就是為了用于本例。實際應(yīng)用時,決不要將重要信息放在注釋中。XSL
允許人們選擇注釋的唯一真實的理由是,為了用樣式單把一種標(biāo)記語言變換成另一種標(biāo)記語言,同時又能使注釋保持不變。
選擇注釋的任何其他方面的用途都意味著原文檔設(shè)計得不好。下面的規(guī)則匹配所有的注釋,并使用xsl:comment 元素將它們
再次復(fù)制出來。
<xsl:template match=”comment()”>
<xsl:comment><xsl:value-of select=”.”/></xsl:comment>
</xsl:template>
可是,要注意,用于施加模板的缺省規(guī)則對注釋無效。因此,遇到注釋時,如果要使缺省規(guī)則起作用,需要包括
xsl:apply-templates 元素,無論注釋放在何處,此元素都能選擇注釋。
使用層次操作符可以選擇特定的注釋。例如,下面的規(guī)則匹配DENSITY 元素內(nèi)部的注釋:
<xsl:template match=”DENSITY/comment()”>
<xsl:comment><xsl:value-of select=”.” /></xsl:comment>
</xsl:template>
14.6.8 使用pi()來匹配處理指令
談到編寫結(jié)構(gòu)化的、智能化的、可維護(hù)的XML 時,處理指令并不比注釋好。但是都有一些必需的應(yīng)用,其中包括將樣式單附
加到文檔上。
pi()函數(shù)選擇處理指令。pi()的參數(shù)是放在引號內(nèi)的字符串,表示要選擇的處理指令的名稱。如果沒有參數(shù),則匹配當(dāng)前節(jié)
點的第一個處理指令子節(jié)點。但是,可以使用層次操作符。例如,下面的規(guī)則匹配根節(jié)點的第一個處理指令子節(jié)點(很可能
是xml-stylesheet 處理指令)。xsl:pi 元素使用指定的名稱和輸出文檔中的值來插入一個處理指令。
<xsl:template match="/pi()">
<xsl:pi name="xml-stylesheet">
type="text/xsl" value="auto.xsl"
</xsl:pi>
XML 實用大全
第 474 頁
</xsl:template/>
下列規(guī)則也匹配xml-stylesheet 處理指令,但是通過其名稱來匹配的:
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(133)