本期介紹多個(gè)XSL對(duì)于VBScript、JScript增加的方法、屬性,以充分發(fā)揮XML的優(yōu)勢(shì),用于<xsl:script>、<xsl:eval>標(biāo)記內(nèi)表達(dá)式的編寫(xiě)或<xsl:if>、<xsl:when>的expr屬性。
一、absoluteChildNumber
含義:返回結(jié)點(diǎn)相對(duì)于它所有的兄弟(不論名字是否相同)的序號(hào)。
語(yǔ)法:absoluteChildNumber(node)
參數(shù):node ── 對(duì)象,欲返回編號(hào)的結(jié)點(diǎn)。
示例:
1、假定文檔結(jié)構(gòu)為:<document><head/><body/></document>,其中document為頂層結(jié)點(diǎn),下述表達(dá)式將輸出:
<xsl:eval> absoluteChildNumber(this.selectNodes('/document/body').item(0)) </xsl:eval>
2、確定當(dāng)前結(jié)點(diǎn)相對(duì)于其所有兄弟的序號(hào):
<xsl:eval> absoluteChildNumber(this) </xsl:eval>
二、ancestorChildNumber
含義:從給定結(jié)點(diǎn)出發(fā)根據(jù)給定祖先結(jié)點(diǎn)名返回最近的祖先結(jié)點(diǎn)的序號(hào)(相對(duì)于同名結(jié)點(diǎn))。如果找不祖先,則返回0。
語(yǔ)法:ancestorChildNumber(bstrNodeName, pNode)
參數(shù):
bstrNodeName ── 字符串。被搜索的祖先結(jié)點(diǎn)的名字。
pNode ── 對(duì)象。搜索開(kāi)始位置的結(jié)點(diǎn)。
示例查找當(dāng)前結(jié)點(diǎn)最近的名為report祖先結(jié)點(diǎn):
ancestorChildNumber('report',this)
三、attributes
含義:返回結(jié)點(diǎn)屬性的集合。
語(yǔ)法:object.attributes
參數(shù):object ── 結(jié)點(diǎn)對(duì)象。
示例:當(dāng)前結(jié)點(diǎn)屬性的個(gè)數(shù)
this.attributes.length
當(dāng)前結(jié)點(diǎn)第三個(gè)屬性的值
this.attributs.item(2).value
或
this.attributes.item(2).text
或
this.attributes(2).text
注意:如果給定的下標(biāo)大于屬性總和減1將出錯(cuò),第一個(gè)屬性的下標(biāo)是0。
四、baseName
含義:返回有名字空間限制的基本名,即不包括名字前綴。
語(yǔ)法:object.baseName
參數(shù):object ── 結(jié)點(diǎn)對(duì)象
示例,當(dāng)前結(jié)點(diǎn)的基本名:
this.baseName
五、childNumber
含義:返回結(jié)點(diǎn)相對(duì)于同名同胞的序號(hào)。
語(yǔ)法:childNumber(object)
參數(shù):object ── 結(jié)點(diǎn)對(duì)象
示例,假定XML文檔結(jié)構(gòu)如下:
<x><y><z></z></y></x>
如果當(dāng)前結(jié)點(diǎn)是z,則childNumber(this)返回1,而absoluteChildNumber(this)返回3。
六、dataType
含義:設(shè)定或讀取結(jié)點(diǎn)的數(shù)據(jù)類(lèi)型。
語(yǔ)法:設(shè)定結(jié)點(diǎn)的數(shù)據(jù)類(lèi)型 object.dataType=objValue 讀取結(jié)點(diǎn)的數(shù)據(jù)類(lèi)型 objValue=object.dataType
參數(shù):object ── 結(jié)點(diǎn)對(duì)象。
示例,讀取當(dāng)前結(jié)點(diǎn)的數(shù)據(jù)類(lèi)型:
dtType=this.dataType
七、depth
含義:指定結(jié)點(diǎn)出現(xiàn)在文檔樹(shù)上的深度,即該結(jié)點(diǎn)位于文檔第幾層,頂層結(jié)點(diǎn)位于第一層,根結(jié)點(diǎn)(即用"/"表示的結(jié)點(diǎn))位于第0層。
語(yǔ)法:depth(pNode)
參數(shù):pNode ── 結(jié)點(diǎn)對(duì)象
示例,當(dāng)前結(jié)點(diǎn)的深度:
depth(this)
八、firstChild、lastChild
含義:返回結(jié)點(diǎn)的第一個(gè)子結(jié)點(diǎn)(或最后一個(gè)子結(jié)點(diǎn))。
語(yǔ)法:pNode.firstChild pNode.lastChild
參數(shù):pNode ── 結(jié)點(diǎn)對(duì)象
示例,當(dāng)前結(jié)點(diǎn)的第一個(gè)結(jié)點(diǎn)的名字:
this.firstChild.nodeName
九、formatIndex
含義:用指定的計(jì)數(shù)系統(tǒng)格式化提供的整數(shù)。
語(yǔ)法:formatIndex(lIndex, bstrFormat)
參數(shù):
lIndex ── 整型數(shù)值或變量
bstrFormat ── 數(shù)據(jù)格式,可選值有a、A、i、I、1、01(以0打頭的數(shù)值形式,如果要求固定長(zhǎng)度的編號(hào)如0001、0002則非常有用)。
示例,當(dāng)前結(jié)點(diǎn)的大寫(xiě)羅馬數(shù)字編號(hào):
formatIndex(childNumber(this),'I')
十、formatNumber
含義:以指定格式輸出數(shù)值。
語(yǔ)法:formatNumber(dblNumber, bstrFormat)
參數(shù):說(shuō)明同formatNumber,不同之處在于格式化的可以是小數(shù)。
示例,對(duì)變量a的值格式化為兩位小數(shù):
formatNumber(a,'#.00'):
十一、hasChildNodes
含義:如果結(jié)點(diǎn)有子結(jié)點(diǎn)則返回true(-1),否則為false(0)。
語(yǔ)法:pNode.hasChildNodes()
注意:與此前介紹的函數(shù)不同,此函數(shù)后必須帶一個(gè)空括號(hào)。
示例,判斷當(dāng)前結(jié)點(diǎn)是否有子結(jié)點(diǎn):
this.hasChildNodes
十二、namespaceURI、prefix
含義:返回結(jié)點(diǎn)名字空間的全局資源標(biāo)識(shí)符(或前綴)。
語(yǔ)法:pNode.namespaceURI pNode.prifix
十三、nextSibling、previousSibling、parentNode
含義:返回結(jié)點(diǎn)的下一個(gè)兄弟(或前一個(gè)兄弟、或結(jié)點(diǎn)的父結(jié)點(diǎn))。
語(yǔ)法:pNode.nextSibling pNode.previousSibling pNode.parentNode
注意:對(duì)根結(jié)點(diǎn)(即"/")應(yīng)用parentNode方法、對(duì)第一個(gè)孩子結(jié)點(diǎn)應(yīng)用previousSibling方法、對(duì)最后一個(gè)孩子結(jié)點(diǎn)應(yīng)用nextSibling方法均會(huì)導(dǎo)致錯(cuò)誤,可通過(guò)此過(guò)關(guān)系運(yùn)算符==(等于)和!=(不等于)來(lái)判斷一個(gè)結(jié)點(diǎn)是否某一指定結(jié)點(diǎn),格式為pNode1 = pNode2或pNode2 != pNode2。
十四、nodeName
含義:返回元素、屬性、入口的名字或其他類(lèi)型結(jié)點(diǎn)的一個(gè)特定字符串。
語(yǔ)法:pNode.nodeName
示例,當(dāng)前結(jié)點(diǎn)的名字:
this.nodeName
十五、nodeType、NodeTypeString
含義:返回結(jié)點(diǎn)的類(lèi)型的數(shù)值形式(或字符串形式)。
語(yǔ)法:pNode.nodeType 或 pNode.nodeTypeString
返回值:
結(jié)點(diǎn)類(lèi)型 |
結(jié)點(diǎn)類(lèi)型值 |
結(jié)點(diǎn)的字符形式描述 |
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' |
十六、nodeTypedValue
含義:以結(jié)點(diǎn)預(yù)定義的數(shù)據(jù)類(lèi)型返回結(jié)點(diǎn)的值。
語(yǔ)法:pNode.nodeTypedValue
示例,假定當(dāng)前結(jié)點(diǎn)的數(shù)據(jù)類(lèi)型是fixed.14.4,下例將以數(shù)值返回結(jié)點(diǎn)的值,而不是文本一個(gè)字符串:
this.nodeTypedValue
十七、nodeValue
含義:返回結(jié)點(diǎn)的文本。
語(yǔ)法:pNode.nodeValue
注意:該方法不用于元素類(lèi)結(jié)點(diǎn),可用于屬性、CDATA、注釋、文本等結(jié)點(diǎn)。
示例,當(dāng)前元素第一個(gè)屬性的值:
this.attributes(0).nodeValue
當(dāng)前元素內(nèi)的文本(假定該元素內(nèi)只有文本,無(wú)其它元素,即<mark>text</mark>,建議多嘗幾次掌握其確切的用法)。
this.firstChild.nodeValue
十八、ownerDocument
含義:返回包含該結(jié)點(diǎn)的文檔的根。
語(yǔ)法:pNode.ownerDocument
注意:該方法用于文檔的根結(jié)點(diǎn)將出錯(cuò)。
十九、selectNodes
含義:給定的樣式匹配應(yīng)用于當(dāng)前結(jié)點(diǎn)并返回匹配的結(jié)點(diǎn)集合。
語(yǔ)法:pNode.selectNodes('pattern')
提示:pattern的編寫(xiě)與<xsl:for-each>的select屬性的值類(lèi)似,其中以"/"開(kāi)頭表示從文檔的根出發(fā)搜索;以"http://"開(kāi)頭表遍歷文檔的所有結(jié)點(diǎn);以".."開(kāi)頭表示從當(dāng)前結(jié)點(diǎn)的父結(jié)點(diǎn)開(kāi)始;如果欲從當(dāng)前結(jié)點(diǎn)向下搜索則不能有以上特殊字符打頭。
示例,與當(dāng)前結(jié)點(diǎn)同名的元素在其父元素內(nèi)的個(gè)數(shù):
childNumber(this.selectNodes("../"+this.nodeName+"[end()]").item(0))
當(dāng)前元素內(nèi)名字為"skill"的元素的個(gè)數(shù):
childNumber(this.selectNodes("skill[end()]").item(0))
二十、selectSingleNode
含義:與selectNodes類(lèi)似,不同的只返回匹配的第一個(gè)結(jié)點(diǎn)、而不是結(jié)點(diǎn)集合。
語(yǔ)法:pNode.selectSingleNode('pattern')
示例,與當(dāng)前結(jié)點(diǎn)同名的元素在其父元素內(nèi)的個(gè)數(shù):
childNumber(this.selectSingleNode("../"+this.nodeName+"[end()]"))
當(dāng)前元素內(nèi)名字為"skill"的元素的個(gè)數(shù):
childNumber(this.selectSingleNode("skill[end()]"))
二十一、text
含義:返回結(jié)點(diǎn)與它的子樹(shù)內(nèi)的文字內(nèi)容。
語(yǔ)法:pNode.text
示例,整個(gè)文檔內(nèi)的文字內(nèi)容:
this.ownerDocument.text
當(dāng)前元素及其子樹(shù)的文字內(nèi)容:
this.text
二十二、xml
含義:返回結(jié)點(diǎn)及其后代的XML表示。
語(yǔ)法:pNode.xml
示例,當(dāng)前文檔的XML內(nèi)容:
this.ownerDocument.xml
另有幾個(gè)函數(shù)不作介紹,列于其下以供參考,如感興趣,請(qǐng)?jiān)L問(wèn)http://msdn.microsoft.com獲取詳細(xì)說(shuō)明。
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)
出處:CSDN
責(zé)任編輯:panliu888
上一頁(yè) 腳本與XSL的結(jié)合及應(yīng)用 下一頁(yè)
◎進(jìn)入論壇網(wǎng)頁(yè)制作、網(wǎng)站綜合版塊參加討論
|