曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<xsl:apply-templates>
<xsl:sort select="ATOMIC_NUMBER"/>
</xsl:apply-templates>
XML 實用大全
第 512 頁
</table>
</body>
</html>
</xsl:template>
<xsl:template match="ATOM">
<tr>
<td><xsl:apply-templates select="NAME"/></td>
<td><xsl:apply-templates select="ATOMIC_NUMBER"/></td>
<td><xsl:apply-templates select="ATOMIC_WEIGHT"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
圖14-5 顯示的結果表明了以字母順序排序的局限。原子序數為1 的氫是第一個元素。但是第二個元素不是原子序數為2 的
氦,而是原子數為10 的氖。盡管按數字10 排在9 之后,但按照字母,10 卻在2 之前。
圖14-5 按原子序數的字母順序排序的原子
XML 實用大全
第 513 頁
但是,通過指導可選的data-type 特性設置為number,即可調整排列順序。例如,
<xsl:sort data-type="number" select="ATOMIC_NUMBER"/>
圖14-6 顯示了正確排序的元素。
圖14-6 以數字順序對原子序數進行排序的原子
按照下面的方法,將order 特性設置為descending,即可使排列順序從缺省的升序改為降序:
<xsl:sort order="descending"
sort="number"
select="ATOMIC_NUMBER"/>
這樣就使元素從最大到最小的原子序數進行排列,所以氫現在處于表的最后。
以字母順序進行的排序自然依賴于字母表。lang 特性可設置關鍵字的語言。此特性的值應是一種ISO 639 語言碼,如對于
英語為en。
這些值與xml:lang 特性支持的值相同,這在第10 章“DTD 中特性聲明”中已經討論過。
最后,可將case-order 特性設置為upper-first 或lower-first 兩個值當中的一個,以指定大寫字母是排在小寫字母之前,
還是反過來。缺省狀況依賴于語言。
XML 實用大全
第 514 頁
14.13 CDATA 和<符
標準的XSL 無法在輸出文檔中插入原始的、未轉義的不是標記一部分的 < 符號。原始的小于號使輸出文檔結構混亂,這是
XSL 不允許的。作為一種替代方法,如果使用如<的字符引用或實體引用<來插入<符號,格式化程序將插入<或可
能為<。
當將JavaScript 嵌入到頁面中時,由于JavaScript 使用 < 符號表示數字的小于,而不是表示標記的開始處,這時,這種
問題就變得重要。
但是,還是可在輸出文檔中插入原始的、未轉義的 > 和 >= 符號的。因此,如果輸出文檔需要包含數字比較關系的
JavaScript,那么可顛倒操作數的順序,將小于比較關系重寫成大于等于比較關系。同樣,可將小于等于比較關系重寫成大
于比較關系。例如,下面為幾行JavaScript 代碼,在我的很多Web 網頁中使用了這些代碼:
if (location.host.tolowercase().indexof("sunsite") < 0) {
location.href="http://metalab.unc.edu/xml/";
}
由于在前兩行中使用了小于號,致使這些行結構混亂。但這些語句與下面的這些語句是完全等效的:
if (0 > location.host.tolowercase().indexof("sunsite")) {
location.href="http://metalab.unc.edu/xml/";
}
如果將布爾操作符組合起來進行多重測試,那么可能需要將邏輯“和”改為邏輯“或”。例如,下面兩行JavaScript 非常
有效地用來測試頁面的位置既不在metalab 處,也不在sunsite 處:
if (location.host.toLowerCase().indexOf("metalab") < 0
&& location.host.tolowercase().indexof("sunsite") < 0) {
location.href="http://metalab.unc.edu/xml/";
}
由于在前兩行中使用了小于號,致使這些語句結構混亂。但下面的這些行也是用來測試頁面是在metalab 上還是在sunsite
上,與上面的代碼行是完全等效的:
if (0 > location.host.toLowerCase().indexOf("metalab")
|| 0 > location.host.tolowercase().indexof("sunsite")) {
location.href="http://metalab.unc.edu/xml/";
}
XML 實用大全
第 515 頁
也可以將這種令人不快的JavaScript 放在獨立的文檔中,并從SCRIPT 元素的SRC 特性中與之進行鏈接。但是,這
在Internet Explorer 4 和Netscape Navigator 3 之前的版本中是不可靠的。
出于簡化的目的,在輸出文檔中CDATA 部分是不允許的。CDATA 部分總是可以用帶有Unicode 轉義(escape)的等價字符集
合來代替出問題的 < 號和 & 號。CDATA 完全是為人類手工編寫XML 文件提供的便利。計算機程序,如XSL 格式化程序并不
需要CDATA 部分。
為向輸出文檔中插入CDATA 部分,包括在Internet Explorer 5.0 中的XSL 格式化程序的確支持非標準的xsl:cdata
元素。但是,這一特點未必會加入到標準的XSL 中,甚至會從將來的Internet Explorer 版本中將此功能刪除。
XML 實用大全
第 516 頁
14.14 方式
有時,要在輸出文檔中多次地包括源文檔中的相同內容。要達到此目的是很容易的:只需多次地應用模板,在每個要使數據
出現的地方應用一次。但是,假如要在不同的地方對數據進行不同的格式化,那怎么辦呢?這是個比較棘手的問題。
例如,若要使處理周期表的輸出文檔形成與100 個更詳細描述各原子信息的鏈接。在此情況下,輸出文檔的開始很可能如下:
<UL>
<LI><A HREF=”#Ac”>Actinium</A></LI>
<LI><A HRFF=”#Al”>Aluminum</A></LI>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(145)