曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
表14-4 列舉了許多既可以作為參數,也可以作為上下文節點對節點集合進行操作的函數。
表14-4 對節點集合進行操作的函數
函數 返回值類型 返回值
position() 數值 上下文節點列表中上下文節點的位置。列表中的第一個節
點其位置為1
last() 數值 上下文節點集合中的節點數
count(node-set) 數值 在node-set 參數指明的節點集合中的節點數
id(string) 節點集合 節點集合,其中只有一個元素(在同一個文檔的任何位置)
其ID 為string;或者空集合(如果任何元素都沒有指定
的ID)
idref(node-set) 節點集合 節點集合,包括文檔中的某些元素,其ID 屬性為在參數
node-set 中指明節點值中的(以空格分開)記號之一
key(string name,
string value)
節點集合 節點集合,包括文檔中所有具有指定值的關鍵字的節點。
關鍵字是使用頂層xsl:key 元素來設置的
keyref(string
name, node set
values)
節點集合 節點集合,包括文檔中所有具有某種關鍵字節點,此關鍵
字的值與第二個參數中的節點值相同
doc(string URI) 節點集合 文檔或由URI 引用的文檔部分中的節點集合;這些節點從
URI 使用的命名的anchor 標記或XPointer 中選擇如果
XML 實用大全
第 486 頁
沒有命名的anchor 標記或Xpointer,那么所指文檔的根
元素就存在于節點集合中。相對URI 是相對于輸入文檔中
的當前節點的
docref(node set) 節點集合 節點集合,包括由URI 引用的,其值為node set 參數的
所有節點
local-part(node
set)
字符串 node set 參數中第一個節點的本地部分(命名域前綴后
面的所有內容);當不使用任何參數時可用于獲取上下文
節點的本地部分
namespace(node
set)
字符串 節點集合中第一個節點命名域的URI;當不使用任何參數
時,可用于獲得上下文節點的命名域URI;如果節點處于
缺省命名域內,則返回空字符
qname(node set) 字符串 node set 參數中第一個節點的合法名稱(可以為前綴和
本地部分);要獲得上下文節點的合法名稱,可不使用任
何參數
generate-id(node
set)
字符串 參數node set 中第一個節點的唯一標識符;不帶參數使
用時,可生成上下文節點的ID
第18 章“命名域”將討論命名域URI、前綴和本地部分。
doc()和docref()函數有點模糊,特別是如果URI 只引用非結構完整的XML 節點或數據片段,就更是如此。細節還
要留待XSL 規范的未來版本加以澄清。
如果向這些函數傳遞了一個錯誤類型的參數,那么XSL 試圖將此參數轉變成正確的類型;例如,將數字12 轉變成字符串
“12”。但是,任何參數都不能轉變成節點集合。
position()函數可用來對元素進行計數。清單14-13 是一個樣式單,它使用<xsl:value-of select = "position"/>,將元
素在文檔中的位置作為原子名的名稱的前綴。
清單14-13:按照文檔中的順序對原子進行編號的樣式單
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/PFRIODIC_TABLE">
XML 實用大全
第 487 頁
<HTML>
<HEAD><TITLE>The Elements</TITLE></HEAD>
<BODY>
<xsl:apply-templates select="ATOM"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="ATOM">
<P>
<xsl:value-of select="position()"/>.
<xsl:value-of select="NAME"/>
</P>
</xsl:template>
</xsl:stylesheet>
將此樣式單應用于清單14-1 時,其輸出結果如下:
<HTML><HEAD><TITLE>The Elements</TITLE></HEAD><BODY><P>1.
Hydrogen</P><P>2.
Helium</P></BODY></HTML>
14.7.2.2 布爾類型
布爾值為兩個值之一:true(真)或false(假)。XSL 允許將任何類型的數據轉變成布爾值。當在可望為布爾值的地方使
用了字符串或數值或節點集合時,通常就暗示需要這樣做,xsl:if 元素的test 特性中正是這樣情況。根據下列這些規則,
也可以使用boolean()函數來完成這種變換過程,此函數將任何類型(或如果不提供參數即為上下文節點)的參數轉變成布
爾值:
• 如果數值為零或NaN(一種特定的符號,意為Not a Number,即不是數字,用于表示被零除所獲得的結果以及類似
的非法操作),則此值為false,否則為true
• 空節點集合為false;所有的其他節點集合為true
• 空結果片段為false;所有其他結果片段都為true
• 零長度字符串為false;所有其他字符串為true
XML 實用大全
第 488 頁
使用下列操作符所獲得的表達式的結果也可以得到布爾值:
= 等于號
< 小于號(實際使用<)
> 大于號
< = 小于等于(實際使用<=)
> = 大于等于
在特性值中<符號是非法的。因此,必須用<來代替,甚至作為小于運算符時也是如此。
這些運算符最常用于判斷是否調用某個規則。選擇表達式不僅含有選擇某些節點的模式,而且還可以含有判斷條件,從而使
用此判斷條件對所選的節點列表進一步篩選。例如,from-children(ATOM)選擇當前節點的所有ATOM 子節點。但是,
from-children(ATOME[position()=1])只選擇當前節點的第一個ATOM 子節點。[position()=1]為一判斷語句,它在節點上
測試ATOM,返回一個布爾結果值,如果當前節點的位置等于1,則返回的結果為true,否則為false。對每個節點的測試都
中國航空網 m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(137)