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