<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 61,  comments - 2033,  trackbacks - 0

    一、XSL的運(yùn)算符

    表一、運(yùn)算符與特殊字符

     運(yùn)算符 描述
    /
    選擇子元素,返回左側(cè)元素的直接子元素;如果"/"位于最左側(cè)表示選擇根結(jié)點(diǎn)的直接子元素
    //
    遞歸下降,不論深度,搜索指定的元素;如果位于最左側(cè)表示從根結(jié)點(diǎn)出發(fā)遞歸下降搜索指定元素
    .
    表示當(dāng)前元素
    *
    通配符,選擇任意元素,不考慮名字
    @

    取得屬性值,作為屬性名的前綴

    @*

    通配符,選擇任意屬性,不考慮名字

    :
    名字作用范圍分隔符,將名字作用范圍前綴與元素或?qū)傩悦指糸_(kāi)來(lái)
    !*
    在相關(guān)節(jié)點(diǎn)上應(yīng)用指定方法
    ()*
    分組,明確指定優(yōu)先順序
    []
    應(yīng)用過(guò)濾樣式
    []*
    下標(biāo)運(yùn)算符,用于在集合中指示元素

      表二、邏輯運(yùn)算符

     可選方式 描述
    and $and$ 或 &&
    邏輯與
    or $or$ 或 ||
    邏輯或
    not() $not$
    邏輯非

      表三、關(guān)系運(yùn)算符

     可選方式 描述
    = 或 $eq$
    相等
    = 或 $ieq$
    相等(不區(qū)分大小寫)
    != 或 $ne$
    不等
    $ine$
    不等(不區(qū)分大小寫)
    < 或 $lt$
    小于
    $ilt$
    小于(不區(qū)分大小寫)
    <= 或 $le$
    小于等于
    $ile$
    小于等于(不區(qū)分大小寫)
    > 或 $gt$
    大于
    $igt$
    大于(不區(qū)分大小寫)
    >= 或 $ge$
    大于等于
    $ige$
    大于等于(不區(qū)分大小寫)
    $all$
    集合運(yùn)算符,如果集合中所有項(xiàng)目均滿足條件則返回"真"
    $any$
    集合運(yùn)算符,如果集合中任意項(xiàng)目滿足條件則返回"真"
    |
    集合運(yùn)算符,返回兩個(gè)集合的聯(lián)合

    二、 腳本與XSL的結(jié)合及應(yīng)用

    <xsl:eval>含義:計(jì)算腳本表達(dá)式,輸出一個(gè)文本字符串。
    語(yǔ)法:
    <xsl:eval language="language-name">
      屬性:
      language ── 規(guī)定所用腳本語(yǔ)言的名字,可用的屬性有"JavaScript"、"JScript"、"VBScript"、"VBS"等,缺省為"JScript"。

    <xsl:script>含義:聲明全局變量或定義函數(shù)。
      語(yǔ)法:
    <xsl:script language="language-name">
      屬性:同<xsl:eval>

    例如:
    <TR><TD>小計(jì)</TD>
    <TD><xsl:eval>total(this,"q1")</xsl:eval></TD>
    <TD><xsl:eval>total(this,"q2")</xsl:eval></TD>
    <TD><xsl:eval>total(this,"q3")</xsl:eval></TD>
    <TD><xsl:eval>total(this,"q4")</xsl:eval></TD>
    </TR>
    </TABLE>

    <xsl:script>
    function total(node,q)
    {
      temp=0;
      mark='/document/report/'+q;
      v=node.selectNodes(mark);
      for(t=v.nextNode();t;t=v.nextNode())
      {
        temp+=Number(t.text);
      }
      return temp; //小計(jì)值
    }
    </xsl:script>
    selectNodes() ── 是XMLDOMObject的一個(gè)方法,返回文檔中所有滿足條件的結(jié)點(diǎn)的集合,條件與< xsl:for-each >和select屬性的取值采用同樣的寫法,可以加篩選、下標(biāo)等限制。


    三、XSL函數(shù)

            1、end()
      含義:返回集合中最后一個(gè)元素。

           2、index()
      含義:返回該元素在集合中的位置,返回值是一整數(shù),其中第一個(gè)元素返回0。

             3、nodeName()
      含義:返回元素的名字,即標(biāo)記名。
      示例:選擇任意元素,假如其名字(即標(biāo)記名)等于"name":
           *[nodeName()='name'] 或 *[name]

              4、number()
            
    含義:將值轉(zhuǎn)換為數(shù)值形式,如果不是數(shù)值則返回空,要求參數(shù)。
      示例:年齡(age)小于30歲的人的簡(jiǎn)歷(resume):
            resume[number(age)$lt$30] 或 resume[age$lt$30]

            5、nodeType()
          
    含義:返回結(jié)點(diǎn)類型,結(jié)果為是數(shù)值。以下是返回值列表:

     結(jié)點(diǎn)類型  結(jié)點(diǎn)類型值  結(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'

      6、value()
            含義:返回元素或?qū)傩缘闹怠?BR>        示例:value()是元素或?qū)傩缘娜笔》椒?,以下表示是等價(jià):
            name!value()="NAME" 與 name="NAME"
           @attr="attribute_value" 與 @attr="attribute_value"
           注:@是屬性前綴,@attr表示是屬性attr

      7、attribute()
      含義:返回所有屬性結(jié)點(diǎn)的集合,等價(jià)于"@*"。
            示例:尋找所有的resume元素,滿足條件至少有一個(gè)屬性的值為"ABC":
             resume[$any$attribute()='ABC'] 或 resume[$any$@*='ABC']
            尋找所有的resume元素,滿足條件至少有一個(gè)子元素有一個(gè)屬性的值為"ABC":
            resume[$any$*/attribute()='ABC'] 或 resume[$any$*/@*='ABC']

           8、comment()
           含義:返回所有注釋結(jié)點(diǎn)。
           示例:
          resume[$any$comment()='禹希初的簡(jiǎn)歷']
          表示尋找含有注釋語(yǔ)句:<!--禹希初的簡(jiǎn)歷-->的<resume>元素。

           9、cdata()
          含義:返回所有CDATA類型的結(jié)點(diǎn)的集合。
          示例:resume[$any$cdata()='禹希初的簡(jiǎn)歷']
          表示尋找含有下述語(yǔ)句(必須是直接子結(jié)點(diǎn))<![CDATA[禹希初的簡(jiǎn)歷]]>的<resume>元   素。

           10、node()
           含義:返回當(dāng)前上下文環(huán)境中除根結(jié)點(diǎn)和屬性結(jié)點(diǎn)以外的所有結(jié)點(diǎn)的集合,等價(jià)于:
           "*|pi()|comment()|text()"

      示例:尋找所有元素resume,其最后一個(gè)結(jié)點(diǎn)的名字為"skill":
            resume[node()[end()]!nodeName()='skill']
            尋找所有resume元素的第一個(gè)結(jié)點(diǎn):resume/node()[0]。

      11、textnode()
           含義:返回所有文本類型的結(jié)點(diǎn)的集合。
           示例:尋找每一個(gè)p元素的第二個(gè)文本結(jié)點(diǎn):p/textnode(1) 或 p!textnode(1)

      12、text()
           含義:返回所有表示文本字符串的結(jié)點(diǎn)的集合,等價(jià)于"cdata()|textnode()"。

    13、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>

    14、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)

    15、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。

    16、baseName
      含義:返回有名字空間限制的基本名,即不包括名字前綴。
      語(yǔ)法:object.baseName
      參數(shù):object ── 結(jié)點(diǎn)對(duì)象
      示例,當(dāng)前結(jié)點(diǎn)的基本名:this.baseName

    17、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。

    18、dataType
      含義:設(shè)定或讀取結(jié)點(diǎn)的數(shù)據(jù)類型。
      語(yǔ)法:設(shè)定結(jié)點(diǎn)的數(shù)據(jù)類型 object.dataType=objValue
         讀取結(jié)點(diǎn)的數(shù)據(jù)類型 objValue=object.dataType
      參數(shù):object ── 結(jié)點(diǎn)對(duì)象。
      示例,讀取當(dāng)前結(jié)點(diǎn)的數(shù)據(jù)類型:dtType=this.dataType

    19、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)

    20、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

    21、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)的大寫羅馬數(shù)字編號(hào):formatIndex(childNumber(this),'I')

    22、formatNumber
      含義:以指定格式輸出數(shù)值。
      語(yǔ)法:formatNumber(dblNumber, bstrFormat)
      參數(shù):說(shuō)明同formatNumber,不同之處在于格式化的可以是小數(shù)。
      示例,對(duì)變量a的值格式化為兩位小數(shù):formatNumber(a,'#.00'):

    23、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

    24、namespaceURI、prefix
      含義:返回結(jié)點(diǎn)名字空間的全局資源標(biāo)識(shí)符(或前綴)。
      語(yǔ)法:pNode.namespaceURI     pNode.prifix

    25、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
      含義:返回元素、屬性、入口的名字或其他類型結(jié)點(diǎn)的一個(gè)特定字符串。
      語(yǔ)法:pNode.nodeName
      示例,當(dāng)前結(jié)點(diǎn)的名字:this.nodeName

    26、nodeType、NodeTypeString
      含義:返回結(jié)點(diǎn)的類型的數(shù)值形式(或字符串形式)。
      語(yǔ)法:pNode.nodeType 或 pNode.nodeTypeString
      返回值:
      結(jié)點(diǎn)類型             結(jié)點(diǎn)類型值        結(jié)點(diǎn)的字符形式描述
      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
      含義:以結(jié)點(diǎn)預(yù)定義的數(shù)據(jù)類型返回結(jié)點(diǎn)的值。
      語(yǔ)法:pNode.nodeTypedValue
      示例,假定當(dāng)前結(jié)點(diǎn)的數(shù)據(jù)類型是fixed.14.4,下例將以數(shù)值返回結(jié)點(diǎn)的值,而不是文本一個(gè)字符串:
      this.nodeTypedValue

    28、nodeValue
      含義:返回結(jié)點(diǎn)的文本。
      語(yǔ)法:pNode.nodeValue
      注意:該方法不用于元素類結(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

    29、ownerDocument
      含義:返回包含該結(jié)點(diǎn)的文檔的根。
      語(yǔ)法:pNode.ownerDocument
      注意:該方法用于文檔的根結(jié)點(diǎn)將出錯(cuò)。

    30、selectNodes
      含義:給定的樣式匹配應(yīng)用于當(dāng)前結(jié)點(diǎn)并返回匹配的結(jié)點(diǎn)集合。
      語(yǔ)法:pNode.selectNodes('pattern')
      提示:pattern的編寫與<xsl:for-each>的select屬性的值類似,其中以"/"開(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))

    31、selectSingleNode
      含義:與selectNodes類似,不同的只返回匹配的第一個(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()]"))

    32、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

    33、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)

    posted on 2005-11-16 16:44 魚上游 閱讀(817) 評(píng)論(2)  編輯  收藏 所屬分類: 爪哇友鄰真不少


    FeedBack:
    # re: XSL 學(xué)習(xí)筆記 —— 中級(jí)篇
    2006-08-02 13:22 | zers
    怎么我在XSL用不了 haschildnodes()這個(gè)函數(shù)的?說(shuō)這不是XSL的函數(shù)  回復(fù)  更多評(píng)論
      
    <2005年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    常用鏈接

    留言簿(82)

    隨筆分類(59)

    文章分類(21)

    相冊(cè)

    收藏夾(40)

    GoodSites

    搜索

    •  

    積分與排名

    • 積分 - 1267192
    • 排名 - 22

    最新評(píng)論

    閱讀排行榜

    主站蜘蛛池模板: 国产AV无码专区亚洲AVJULIA| 中文字幕永久免费| 亚洲精彩视频在线观看| 亚洲国产成人久久精品app| 亚洲乱码国产一区网址| 国产男女性潮高清免费网站| 337p日本欧洲亚洲大胆人人| 精品亚洲视频在线观看| 好爽好紧好大的免费视频国产| 国产亚洲福利一区二区免费看| 亚洲宅男精品一区在线观看| 免费人成视频x8x8入口| 女人被免费视频网站| 色妞www精品视频免费看| 亚洲一区二区三区国产精华液| 亚洲视频一区二区| 免费a级毛片网站| 国产成人免费福利网站| 真实乱视频国产免费观看| aa级女人大片喷水视频免费| 亚洲国产精品成人综合色在线婷婷| 亚洲成AV人片在WWW色猫咪| 亚洲精品色午夜无码专区日韩| 精品久久久久久久久免费影院| 疯狂做受xxxx高潮视频免费| 亚洲精品国产第一综合99久久| 亚洲色成人网站WWW永久四虎| 亚洲日本中文字幕天天更新| 亚洲日韩精品无码专区加勒比 | 亚洲狠狠成人综合网| 亚洲一级片在线播放| 亚洲三级在线播放| 亚洲欧洲日韩国产一区二区三区| ASS亚洲熟妇毛茸茸PICS| 亚洲国产系列一区二区三区| 亚洲人成自拍网站在线观看| 亚洲午夜无码毛片av久久京东热 | 国产猛烈高潮尖叫视频免费| 国产又黄又爽又刺激的免费网址| 免费一级毛片正在播放| 最新国产AV无码专区亚洲 |