曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
round()將數值四舍五入成最接近的整數
sum()返回其參數的和
例如下面的模板規則將原子量(各同位素在自然界分布的中子數與質子數之和的加權平均數)減去原子序數(質子數),計
算出原子中的中子數,并四舍五入成最接近的整數:
<xsl:template match="ATOM">
<P>
XML 實用大全
第 492 頁
<xsl:value-of select="NAME"/>
<xsl:value-of
select="round(ATOMIC_WEIGHT – ATOMIC_NUMBER)"/>
</P>
</xsl:template>
下面的規則將所有的原子量相加,然后除以原子的個數,從而計算出表中所有原子的平均原子量:
<xsl:template match="/PERIODIC_TABLE">
<HTML>
<BODY>
<H1>Average Atomic Weight</H1>
<xsl:value-of
select="sum(from-descendants(ATOMIC_WEIGHT))
div count(from-descendants(ATOMIC_WEIGHT))"/>
</BODY>
</HTML>
</xsl:template>
14.7.2.4 字符串
字符串是Unicode 字符序列。按照下面的準則,使用string()函數,就可以將其他數據類型轉換成字符串類型:
• 節點集合轉換的結果是將集合中的節點值連接在一起。根據表14-1 所給出的規則,由xsl:value-of 元素計算出集
合中的節點值。
• 結果樹形片段(result tree fragment)在轉換時,很像是一個元素,并取此假想的元素值。而此假想的元素值是根
據表14-1 所給出的規則,由xsl:value-of 元素計算出的。
• 數字轉換成歐洲風格的數字字符串,如“-12”或“3.1415292”。
• 布爾值的false 轉換成英語單詞的“false”;布爾值的true 轉換成英語單詞的“ true”。
除了string( )之外,XSL 還有七個對字符進行操作的函數。現總結于表14-5 中。
表14-5 對字符串進行操作的函數
XML 實用大全
第 493 頁
函數 返回值類型 返回值
starts-with(main_string, prefix_string) 布爾
如果main_string 以prefix_string 開始,則為true;
否則為false
Contains(containing_string,
contained_string)
布爾
如果contained_string 參數是containing_string
參數的一部分,則為true;否則為false
Substring-before(string, marker-string) 字符串
從string 的第一個字符直到第一次出現
marker-string 止(但不包括)的部分
Substring-after(string, marker-string) 字符串
從第一次出現marker-string 之后到string 最后一
個字符為止的部分
Normalize(string) 字符串
截去string 首尾空白后的部分,并且一連串的空白
以一個空格代替;如果忽略string 參數,則將上下
文節點的字符串值變成為正常字符串
Translate(string, replaced_text,
replacement_text)
字符串
返回string 中由replacement_text 中的相應字符來
代替replaced_text 中的字符后的結果
concat(string1, string2, ) 字符串
將以參數形式傳遞的所有字符串連接起來,并返回這
種連接后的字符串,其順序為傳遞時的順序
format-number(number, format-string,
locale-string)
字符串
返回number 參數格式化后的字符串形式。格式化是
按照由locale-string 參數指定的位置中的
format-string 參數所指定的格式進行的。其工作方
式就好像由Java 1.1 中的java.text.DecimalFormat
類所進行的格式化一樣(請參考
http://java.sun.com/
products/jdk/1.1/docs/api/java.text.
DecimalFormat.html)
14.7.2.5 結果樹形片段
結果樹形片段是XML 文檔的一部分,而不是一個完整的節點或節點集合。例如,使用帶有指向元素中間的URI 的doc()函數,
其結果可能產生一結果樹形片段。有些擴展函數(專門用于特定的XSL 實現或安裝的函數)也可以返回結果樹形片段。
由于結果樹形片段不是結構整潔的XML,所以不能用它們來做什么事。實際上,唯一允許的操作是分別使用string()和
boolean()函數,來將它們轉換成字符串值或布爾值。
XML 實用大全
第 494 頁
14.8 缺省的模板規則
在XSL 樣式單中,十分小心地映射XML 文檔的層次,是很困難的。如果文檔不按照固定的、可預料的順序(如周期表)排列,
而是正像許多Web 網頁那樣隨意地將元素放在一起,這種情況就很難映射XML 文檔的層次。在這些情況下,應有通用的規則,
來查找元素并將模板應用于此元素,而不必考慮此元素究竟出現在源文檔的何處。
為了使此過程更容易,XSL 定義兩個缺省的模板規則,在所有的樣式單中都隱性地包括這兩個規則。第一個缺省規則將模板
應用于所有元素的子元素,以遞歸的形式,降序排列元素的結構樹。這種方式可確保應用于元素的所有模板規則都能夠被說
明。第二個缺省規則應用于下一個節點,將這些節點的值復制到輸出流中。這兩個規則共同使用,表示即使是沒有任何元素
的空XSL 樣式單,仍將產生把輸入的XML 文檔的原始字符數據作為輸出內容的結果。
14.8.1 元素的缺省規則
第一個缺省規則應用于任何類型的元素節點或根節點:
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
*|/ 是“任何元素的節點或根節點”的縮寫形式。本規則的目的,就是要確保所有的元素即使沒有受到隱性規則的影響,也
都按遞歸的方式處理。也就是說,除非其他的規則覆蓋了本規則(特別是對根元素就是如此),否則所有的元素節點都要處
理。
但是,一旦存在任何父元素的隱性規則,那么對于子元素,除非父元素的模板規則有xsl:apply-templates 子元素,否則本
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(139)