曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<xsl:template match="ATOM">
An Atom
</xsl:template>
</xsl:stylesheet>
當本樣式單應用于清單14-1 時,將進行以下處理:
1.將根節點與樣式單中的所有模板規則進行比較,它與第一個模板規則相匹配。
2.寫出<html>標記。
XML 實用大全
第 458 頁
3.xsl:apply-templates 元素使格式化引擎處理子節點。
A.將根節點的第一個子節點(xml-stylesheet 指令)與模板規則相比較,此子節點與任何一個模板規則都不匹配,所以不
產生任何輸出。
B.將根節點的第二個子節點(根元素PERIODIC_TABLE)與模板規則相比較,此子節點與第二個模板規則相匹配。
C.寫出<body>標記。
D.body 元素中的xsl:apply-templates 元素使格式化引擎處理PERIODIC_TABLE 的子節點。
a.將PERIODIC_TABLE 元素的第一個子元素(即氫的ATOM 元素)與模板規則進行比較,此子元素與第三個模板規則相匹配。
b.輸出文本An Atom。
c.將PERIODIC_TABLE 元素的第二個子元素(即氦的ATOM 元素)與模板規則進行比較,此子元素與第三個模板規則相匹配。
d.輸出文本An Atom。
E.寫出</body>標記。
4.寫出</html>標記。
5.處理完成。
最后的結果為:
<html><body>
An Atom
An Atom
</body></html>
14.3.2 select 特性
為了用ATOM 元素的名稱(由其NAME 子元素給出)來代替An Atom 文本,需要指定模板應用于ATOM 元素的NAME 子元素。為
了選擇一組特定的子元素,而不是所有的子元素,可向xsl:apply-templates 提供select 特性,用來指定要選擇的子元素。
見下面的例子:
<xsl:template match=”ATOM”>
<xsl:apply-templates select=”NAME”/>
</xsl:template>
XML 實用大全
第 459 頁
select 特性使用同一類型的模式作為xsl:template 元素的match 特性。目前,我們堅持使用簡單的元素名稱;但本章后面
有關匹配和選擇模式的部分,將討論select 和match 更多的可能用法,如果不存在select 特性,那么選擇所有的子元素。
將上面的規則加到清單14-5 的樣式單,并應用于清單14-5,其結果如下:
<html><head/><body>
Hydrogen
Helium
</body></html>
XML 實用大全
第 460 頁
14.4 使用xsl:value-of 來計算節點值
xsl:value-of 元素把輸入文檔中的節點值復制到輸出文檔中。xsl:value-of 元素的select 特性指定正在獲取的是哪個節
點值。
例如,假設要將文字An Atom 代替為由NAME 子元素內容給出的ATOM 元素的名稱,可用<xsl:value-of select="NAME"/>代
替An Atom,如下所示:
<xsl:template match="ATOM">
<xsl:value of select="NAME"/>
</xsl:template>
然后,當將樣式單應用于清單14-1 時,產生如下文本:
<html><head/><body>
Hydrogen
Helium
</body></html>
選擇其值的項目(本例中的NAME 元素)是與源節點有關的。源節點是由模板來匹配的項目(本例中的特指ATOM 元素)。因
此,當氫的ATOM 與<xsl:template match= "ATOM">相匹配,氫的ATOM 的NAME 元素就由xsl:value-of 選定了。當氦的ATOM
與<xsl:template match= "ATOM">相匹配時,氦的ATOM 的NAME 元素就由xsl:value-of 選定了。
節點的值總是字符串,有時可能為空字符串。此字符串的精確內容由節點的類型而定。最普通的節點類型為元素,元素節點
的值特別簡單,就是在元素的開始標記和結束標記之間的所有可析字符數據(但不是標記。。例如,清單14-1 中的第一
個ATOM 元素如下所示:
<ATOM STATE="GAS">
<NAME>Hydrogen</NAME>
<SYMBOL>H</SYMBOL>
<ATOMIC_NUMBER>l</ATOMIC_NUMBER>
<ATOMIC_WEIGHT>1.00794</ATOMIC_WEIGHT>
<OXIDATION_STATES>1</OXIDATION_STATES>
<BOILING_POINT UNITS="Kelvin">20.28</BOILING_POINT>
<MELTING_POINT UNITS="Kelvin">13.81</MELTING_POINT>
XML 實用大全
第 461 頁
<DENSITY UNITS="grams/cubic centimeter"><!- At 300K ->
0.0899
</DENSITY>
</ATOM>
元素的值顯示如下:
Hydrogen
H
1
1.00794
1
20.28
13.81
0.0899
我通過刪除所有的標記和注釋后計算出了這些值。包括空格在內的其他一切內容都完整無缺地保留著。其他六個節點類型的
值也可以類似的非常明顯的方式加以計算。表14-1 總結了這些值的結果。
表14-1 節點值
節點類型 值
根節點 根元素的值
元素 包括在元素中的所有可析的字符數據(包括元素的任何后代中的字符數據)
文本 節點的文本;實際上為節點本身
特性 標準化的特性值(詳細說明見XML 1.0 推薦的第3.3.3 節);主要為實體還
原后的特性值,截去前導和后隨的空格;不包括特性名、等號或引號
命名域 用于命名域的URL
處理指令 處理指令的值;不包括<?或?>以及處理指令名
注釋 注釋文本,不包括<!--和-—>
XML 實用大全
第 462 頁
XML 實用大全
第 463 頁
14.5 使用xsl:for-each 處理多個元素
xsl:value-of 元素只用于能夠不含糊地確定要獲取哪個節點值的上下文中。如果有多個可能項可供選擇,那么只選擇第一
項。例如,由于普通的PERIODIC_TABLE 元素包含一個以上的ATOM,所以下列的規則較差:
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(130)