三、XSL函數
1、end()
含義:返回集合中最后一個元素。
2、index()
含義:返回該元素在集合中的位置,返回值是一整數,其中第一個元素返回0。
3、nodeName()
含義:返回元素的名字,即標記名。
示例:選擇任意元素,假如其名字(即標記名)等于"name":
*[nodeName()='name'] 或 *[name]
4、number()
含義:將值轉換為數值形式,如果不是數值則返回空,要求參數。
示例:年齡(age)小于30歲的人的簡歷(resume):
resume[number(age)$lt$30] 或 resume[age$lt$30]
5、nodeType()
含義:返回結點類型,結果為是數值。以下是返回值列表:
結點類型 |
結點類型值 |
結點的字符形式描述 |
Element |
1 |
'element' |
Element Attribute |
2 |
'attribute' |
Markup-Delimited Region of Text |
3 |
'text' |
Processing Instruction |
7 |
'processing_instruction' |
Comment |
8 |
'comment' |
Document Entity |
9 |
'document' |
6、value()
含義:返回元素或屬性的值。
示例:value()是元素或屬性的缺省方法,以下表示是等價:
name!value()="NAME" 與 name="NAME"
@attr="attribute_value" 與 @attr="attribute_value"
注:@是屬性前綴,@attr表示是屬性attr
7、attribute()
含義:返回所有屬性結點的集合,等價于"@*"。
示例:尋找所有的resume元素,滿足條件至少有一個屬性的值為"ABC":
resume[$any$attribute()='ABC'] 或 resume[$any$@*='ABC']
尋找所有的resume元素,滿足條件至少有一個子元素有一個屬性的值為"ABC":
resume[$any$*/attribute()='ABC'] 或 resume[$any$*/@*='ABC']
8、comment()
含義:返回所有注釋結點。
示例:
resume[$any$comment()='禹希初的簡歷']
表示尋找含有注釋語句:<!--禹希初的簡歷-->的<resume>元素。
9、cdata()
含義:返回所有CDATA類型的結點的集合。
示例:resume[$any$cdata()='禹希初的簡歷']
表示尋找含有下述語句(必須是直接子結點)<![CDATA[禹希初的簡歷]]>的<resume>元 素。
10、node()
含義:返回當前上下文環(huán)境中除根結點和屬性結點以外的所有結點的集合,等價于:
"*|pi()|comment()|text()"
示例:尋找所有元素resume,其最后一個結點的名字為"skill":
resume[node()[end()]!nodeName()='skill']
尋找所有resume元素的第一個結點:resume/node()[0]。
11、textnode()
含義:返回所有文本類型的結點的集合。
示例:尋找每一個p元素的第二個文本結點:p/textnode(1) 或 p!textnode(1)
12、text()
含義:返回所有表示文本字符串的結點的集合,等價于"cdata()|textnode()"。
13、absoluteChildNumber
含義:返回結點相對于它所有的兄弟(不論名字是否相同)的序號。
語法:absoluteChildNumber(node)
參數:node ── 對象,欲返回編號的結點。
示例:
1、假定文檔結構為:<document><head/><body/></document>,其中document為頂層結點,下述表達式將輸出:
<xsl:eval>
absoluteChildNumber(this.selectNodes('/document/body').item(0))
</xsl:eval>
2、確定當前結點相對于其所有兄弟的序號:
<xsl:eval>
absoluteChildNumber(this)
</xsl:eval>
14、ancestorChildNumber
含義:從給定結點出發(fā)根據給定祖先結點名返回最近的祖先結點的序號(相對于同名結點)。如果找不祖先,則返回0。
語法:ancestorChildNumber(bstrNodeName, pNode)
參數:
bstrNodeName ── 字符串。被搜索的祖先結點的名字。
pNode ── 對象。搜索開始位置的結點。
示例查找當前結點最近的名為report祖先結點:
ancestorChildNumber('report',this)
15、attributes
含義:返回結點屬性的集合。
語法:object.attributes
參數:object ── 結點對象。
示例:當前結點屬性的個數
this.attributes.length
當前結點第三個屬性的值this.attributs.item(2).value或this.attributes.item(2).text或this.attributes(2).text
注意:如果給定的下標大于屬性總和減1將出錯,第一個屬性的下標是0。
16、baseName
含義:返回有名字空間限制的基本名,即不包括名字前綴。
語法:object.baseName
參數:object ── 結點對象
示例,當前結點的基本名:this.baseName
17、childNumber
含義:返回結點相對于同名同胞的序號。
語法:childNumber(object)
參數:object ── 結點對象
示例,假定XML文檔結構如下:<x><y><z></z></y></x>
如果當前結點是z,則childNumber(this)返回1,而absoluteChildNumber(this)返回3。
18、dataType
含義:設定或讀取結點的數據類型。
語法:設定結點的數據類型 object.dataType=objValue
讀取結點的數據類型 objValue=object.dataType
參數:object ── 結點對象。
示例,讀取當前結點的數據類型:dtType=this.dataType
19、depth
含義:指定結點出現在文檔樹上的深度,即該結點位于文檔第幾層,頂層結點位于第一層,根結點(即用"/"表示的結點)位于第0層。
語法:depth(pNode)
參數:pNode ── 結點對象
示例,當前結點的深度:depth(this)
20、firstChild、lastChild
含義:返回結點的第一個子結點(或最后一個子結點)。
語法:pNode.firstChild
pNode.lastChild
參數:pNode ── 結點對象
示例,當前結點的第一個結點的名字:this.firstChild.nodeName
21、formatIndex
含義:用指定的計數系統(tǒng)格式化提供的整數。
語法:formatIndex(lIndex, bstrFormat)
參數:
lIndex ── 整型數值或變量
bstrFormat ── 數據格式,可選值有a、A、i、I、1、01(以0打頭的數值形式,如果要求固定長度的編號如0001、0002則非常有用)。
示例,當前結點的大寫羅馬數字編號:formatIndex(childNumber(this),'I')
22、formatNumber
含義:以指定格式輸出數值。
語法:formatNumber(dblNumber, bstrFormat)
參數:說明同formatNumber,不同之處在于格式化的可以是小數。
示例,對變量a的值格式化為兩位小數:formatNumber(a,'#.00'):
23、hasChildNodes
含義:如果結點有子結點則返回true(-1),否則為false(0)。
語法:pNode.hasChildNodes()
注意:與此前介紹的函數不同,此函數后必須帶一個空括號。
示例,判斷當前結點是否有子結點:this.hasChildNodes
24、namespaceURI、prefix
含義:返回結點名字空間的全局資源標識符(或前綴)。
語法:pNode.namespaceURI pNode.prifix
25、nextSibling、previousSibling、parentNode
含義:返回結點的下一個兄弟(或前一個兄弟、或結點的父結點)。
語法:pNode.nextSibling pNode.previousSibling pNode.parentNode
注意:對根結點(即"/")應用parentNode方法、對第一個孩子結點應用previousSibling方法、對最后一個孩子結點應用nextSibling方法均會導致錯誤,可通過此過關系運算符==(等于)和!=(不等于)來判斷一個結點是否某一指定結點,格式為pNode1 = pNode2或pNode2 != pNode2。
十四、nodeName
含義:返回元素、屬性、入口的名字或其他類型結點的一個特定字符串。
語法:pNode.nodeName
示例,當前結點的名字:this.nodeName
26、nodeType、NodeTypeString
含義:返回結點的類型的數值形式(或字符串形式)。
語法:pNode.nodeType 或 pNode.nodeTypeString
返回值:
結點類型 結點類型值 結點的字符形式描述
Element 1 'element'
Element Attribute 2 'attribute'
Markup-Delimited 3
Region of Text 'text'
Processing Instruction 7 'processing_instruction'
Comment 8 'comment'
Document Entity 9 'document'
27、nodeTypedValue
含義:以結點預定義的數據類型返回結點的值。
語法:pNode.nodeTypedValue
示例,假定當前結點的數據類型是fixed.14.4,下例將以數值返回結點的值,而不是文本一個字符串:
this.nodeTypedValue
28、nodeValue
含義:返回結點的文本。
語法:pNode.nodeValue
注意:該方法不用于元素類結點,可用于屬性、CDATA、注釋、文本等結點。
示例,當前元素第一個屬性的值:this.attributes(0).nodeValue
當前元素內的文本(假定該元素內只有文本,無其它元素,即<mark>text</mark>,建議多嘗幾次掌握其確切的用法)。
this.firstChild.nodeValue
29、ownerDocument
含義:返回包含該結點的文檔的根。
語法:pNode.ownerDocument
注意:該方法用于文檔的根結點將出錯。
30、selectNodes
含義:給定的樣式匹配應用于當前結點并返回匹配的結點集合。
語法:pNode.selectNodes('pattern')
提示:pattern的編寫與<xsl:for-each>的select屬性的值類似,其中以"/"開頭表示從文檔的根出發(fā)搜索;以"http://"開頭表遍歷文檔的所有結點;以".."開頭表示從當前結點的父結點開始;如果欲從當前結點向下搜索則不能有以上特殊字符打頭。
示例,與當前結點同名的元素在其父元素內的個數:
childNumber(this.selectNodes("../"+this.nodeName+"[end()]").item(0))
當前元素內名字為"skill"的元素的個數:
childNumber(this.selectNodes("skill[end()]").item(0))
31、selectSingleNode
含義:與selectNodes類似,不同的只返回匹配的第一個結點、而不是結點集合。
語法:pNode.selectSingleNode('pattern')
示例,與當前結點同名的元素在其父元素內的個數:
childNumber(this.selectSingleNode("../"+this.nodeName+"[end()]"))
當前元素內名字為"skill"的元素的個數:
childNumber(this.selectSingleNode("skill[end()]"))
32、text
含義:返回結點與它的子樹內的文字內容。
語法:pNode.text
示例,整個文檔內的文字內容:this.ownerDocument.text
當前元素及其子樹的文字內容:this.text
33、xml
含義:返回結點及其后代的XML表示。
語法:pNode.xml
示例,當前文檔的XML內容:this.ownerDocument.xml
另有幾個函數不作介紹,列于其下以供參考,如感興趣,請訪問http://msdn.microsoft.com獲取詳細說明。
formatTime(varTime, bstrFormat,varDestLocale)
formatDate(varDate, bstrFormat,varDestLocale)
apendChild(newChild)
definition
CloneNode
insertBefore(newChild, refChild)
parsed
removeChild(oldChild)
replaceChild(newChild, oldChild)
specified
transformNode(stylesheet)
transformNodeToObject(stylesheet,outputObject)
uniqueID(pNode)
posted on 2005-11-16 16:44
魚上游 閱讀(817)
評論(2) 編輯 收藏 所屬分類:
爪哇友鄰真不少