曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
于樣式單中的幾個不同地方時,可將它轉換成命名的模板。命名的模板與變量類似,但能夠包括從應用模板的位置獲得的數
據,而不是僅僅插入固定的文本。
xsl:template 元素有name 特性,使用此特性,可隱性地調用該元素,甚至在非間接地應用此元素時也是如此。例如,下面
顯示的是用于給上面模式命名的模板:
<xsl:template name="ATOM_CELL">
<td>
<font face="Times, serif" color="blue" size="2">
XML 實用大全
第 521 頁
<b>
<xsl:value-of select="."/>
</b>
</font>
</td>
</xsl:template>
宏中間的<xsl:value-of select="."/>元素被替換為調用此模板的當前節點的內容。
xsl:call-template 元素出現在模板規則的內容中,必須有name 參數,用來對此元素要調用的模板進行命名。處理后,
xsl:call-template 元素被它命名的xsl:call-template 元素的內容所代替。例如,現在我們使用xsl:cal-template 元素
來調用給模板命名的ATOM_CELL,那么可按下列方法重寫ATOMIC_NUMBER 規則:
<xsl:template match="ATOMIC_NUMBER">
<xsl:call-template name="ATOM_CELL"/>
</xsl:template>
這種相當簡單的例子僅省掉了幾行代碼,但模板越復雜,并且重復使用的次數越多,樣式單的復雜程度降低得就越大。命名
的模板正如變量一樣,還有提取樣式單中的通用模式的優點,所以可作為一個模板來編輯。例如,如果要將原子序數、原子
量和其他關鍵值的顏色由藍色改變為紅色,那么只需要在命名模板中對此改變一次即可。不必在每個分立的模板規則中單獨
改變此顏色。這有助于在較長的開發過程中,使樣式保持更大的一致性。
14.16.1 參數
對命名模板的每一次分開調用,都可將參數傳遞給模板,以便定制其輸出內容。在xsl:template 元素中,參數是由
xsl:param-variable 子元素來表示的。在xsl:call-template 元素中,參數是由xsl:param 子元素來表示的。
例如,假定要將每個原子單元格鏈接到一特定的文件中。其輸出類似于下列情景:
<td>
<font face=”Times, serif” color=”blue” size=”2”>
<b>
<a href=”atomic_number.html”>52</a>
</b>
</font>
XML 實用大全
第 522 頁
</td>
其訣竅是,由于對模板的每次分開調用都會引起href 特性的值發生變化,所以必須從調用模板的位置將href 特性的值傳遞
過去。
<td>
<font face=”Times, serif” color=”blue” size=”2”>
<b>
<a href=”atomic_weight.html”>4.0026</a>
</b>
</font>
</td>
支持此種情況的模板與下列代碼類似:
<xsl:template name=”ATOM_CELL”>
<xsl:param-variable name=”file”>
index.html
</xsl:param-variable>
<td>
<font face=”Times, serif” color=”blue” size=”2”>
<b>
<a href=”{$file}”><xsl:value-of select=”.”/></a>
</b>
</font>
</td>
</xsl:template>
xsl:param-variable 元素的name 特性給參數起個名稱(如果有多個參數則更為重要),如果調用過程不提供值的話,那么
xsl:param-variable 元素的內容就為要使用的這個參數提供一個缺省值。(這個缺省值還可以使用expr 特性,以字符串表
達式的形式給出,與xsl:variable 完全一樣。)
XML 實用大全
第 523 頁
當調用此模板時,xsl:call-template 元素的xsl:param 子元素使用其name 特性來識別參數、使用其內容來給參數提供一
個值的方法,從而提供該參數的值。例如:
<xsl:template match=”ATOMIC_NUMBER”>
<xsl:call template macro=”ATOM_CELL”>
<xsl:param name=”file”>atomic_number.html</xsl:param>
<xsl:value-of select=”.”/>
</xsl:call-template>
</xsl:template>
這是一個相當簡單的例子,但復雜得多的命名模板是存在的。例如,為了用于許多不同樣式單(每種樣式單一定要單獨改變
網頁作者名字、網頁標題和版權日期幾個參數)的輸入,很可能需要定義Web 站點上網頁的頁眉和頁腳宏。
XML 實用大全
第 524 頁
14.17 刪除和保留空白
讀者可能已經注意到,到目前為止,所有輸出實例的格式化方式都有點奇怪。造成這種現象的原因是,源文檔需要將長行劃
分成多行,以便適合本書頁邊距的要求。不幸的是,往輸入文檔中增加額外的空白,就會帶到輸出文檔中。對于計算機來說,
毫無意義的空白的具體內容并不重要,但對于人來說,這些空白內容就令人困惑。
像ATOMIC_NUMBER 或DENSITY 元素那樣,用于文本節點的缺省行為就是保留所有的空白。常見的DENSITY 元素看起來如下面
那樣:
<DENSITY UNITS="grams/cubic centimeter"><!- At 300K ->
7.9
</DENSITY>
當取其值時,值中就會包括首、尾空白(如下所示),盡管這個空白在此處只是用來滿足打印頁面的要求,但沒有什么實際
意義:
7.9
但是,有一種例外的情況。如果文本節點只含有空白,沒有其他文本,那么這個空白就認為是毫無意義,并被刪除。但對此
例外還有一種例外:如果文本先輩的xml:space 特性保存有值,那么就不會刪除此文本,除非更近的先輩的xml:space 特性
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(147)