association

          XPath定位路徑

          Previous Next

          一個定位路徑表達式返回一個節點集。


          定位路徑表達式

          一個定位路徑可以是絕對的或相對的。

          絕對定位路徑以一個斜線(/)開頭,而相對定位路徑沒有。兩種情況下,定位路徑由一個或多個定位步驟組成,每個步驟由一個斜線分隔:

          一個絕對定位路徑:
          /step/step/...
          一個相對定位路徑:
          step/step/...

          定位步驟從左到右,依次按順序計算。每個步驟根據當前節點集的節點計算。如果定位路徑是絕對的,那么當前節點集包含根節點。如果定位路徑是相對的,那么當前節點集包含使用表達式的節點。定位步驟包括:

          • 一個軸(指定當前定位步驟和當前節點選擇的節點間的樹關系)
          • 一個節點測試(指定定位步驟選擇的節點的節點類型和擴展名)
          • 零或多個預測(使用表達式進一步抽取定位步驟選定的節點集)

          一個定位步驟的語法為:

          軸名::節點測試[預測]

          示例:

          child::price[price=9.90]


          軸和節點測試

          一個軸定義相對于當前節點的節點集。節點測試用于識別軸內的一個節點。我們可以通過名或類型來執行一個節點測試。

          軸名 描述
          ancestor

          包含當前節點的所有祖先節點

          注意: 除非當前節點是根節點,否則這個軸始終包括根節點

          ancestor-or-self 包括當前節點和所有當前節點的祖先節點
          attribute 包含當前節點所有的屬性
          child 包含當前節點所有的子節點
          descendant

          包含當前節點的所有后代節點

          注意:這個軸不包括屬性或命名空間節點

          descendant-or-self 包含當前節點本身和所有它的后代節點
          following 包含文檔中當前節點的結束標記后所有節點
          following-sibling 包含當前節點后所有的同層節點

          注意: 如果當前節點是屬性節點或命名空間節點,那么這個軸為空

          namespace 包含當前節點的所有命名空間節點
          parent 包含當前節點的所有父節點
          preceding 包含文檔中當前節點的開始標記之前的所有節點
          preceding-sibling 包含當前節點之前的所有同層節點

          注意: 如果當前節點是一個屬性節點或者命名空間節點,那么這個軸為空

          self 當前節點本身

          示例

          示例 結果
          child::cd 選擇當前節點的子節點中所有的cd元素(如果當前節點沒有cd子節點,那么將返回一個空節點集)
          attribute::src 選擇當前節點的src屬性(如果當前節點沒有src屬性,那么返回一個空節點集)
          child::* 選擇當前節點的所有子元素
          attribute::* 選擇當前節點的所有屬性
          child::text() 選擇當前節點的文本節點子節點
          child::node() 選擇當前節點的所有子節點
          descendant::cd 選擇當前節點的后代中所有cd元素
          ancestor::cd 選擇當前節點的祖先節點中所有cd元素
          ancestor-or-self::cd 選擇當前節點的祖先節點中所有cd元素,如果當前節點是一個cd元素,那么也包括當前節點
          child::*/child::price

          選擇當前節點的孫子節點中所有price元素

          / 選擇文檔根


          預測

          一個預測過濾一個節點集為一個新的節點集。預測放在方括號([])中。

          示例

          示例 結果
          child::price[price=9.90] 選擇當前節點的子節點中price元素等于9.90的所有價格元素
          child::cd[position()=1] 選擇當前節點的第一個cd子元素
          child::cd[position()=last()] 選擇當前節點的最后一個cd子元素
          child::cd[position()=last()-1] 選擇當前節點的倒第二個cd元素
          child::cd[position()<6] 選擇當前節點的前五個cd元素
          /descendant::cd[position()=7] 選擇文檔中第七個cd元素
          child::cd[attribute::type="classic"] 選擇當前節點的所有type屬性等于classic的cd子節點


          定位路徑縮寫語法

          定位路徑可以用縮寫表示。

          最重要的縮寫為:child::可以從一個定位步驟中省略。

          縮寫 含義 示例
          none child:: cd是child::cd的簡寫
          @ attribute:: cd[@type="classic"]是child::cd[attribute::type="classic"]的簡寫
          . self::node() .//cd是self::node()/descendant-or-self::node()/child::cd的簡寫
          .. parent::node()

          ../cd是parent::node()/child::cd的簡寫

          // /descendant-or-self::node()/ //cd是/descendant-or-self::node()/child::cd的簡寫

          示例

          示例 結果
          cd 選擇當前節點的子節點中所有cd元素
          * 選擇當前節點的所有子元素
          text() 選擇當前節點的子節點中所有文本節點
          @src 選擇當前節點的所有src屬性
          @* 選擇當前節點的所有屬性
          cd[1] 選擇當前節點的第一個cd子節點
          cd[last()] 選擇當前節點的最后一個cd子節點
          */cd 選擇當前節點的所有cd孫子節點
          /book/chapter[3]/para[1] 選擇book節點的第三個chapter子節點的第一個para子節點
          //cd 選擇所有文檔根的所有cd元素后代,因而在同一個文檔選擇所有的cd元素作為當前節點
          . 選擇當前節點
          .//cd 選擇當前節點的cd元素后代
          .. 選擇當前節點的父親節點
          ../@src 選擇當前節點的父節點的src屬性
          cd[@type="classic"] 選擇當前節點的子節點中type屬性等于classic的所有cd子節點
          cd[@type="classic"][5] 選擇當前節點的子節點中type屬性等于classic的cd子節點中第五個節點
          cd[5][@type="classic"] 選擇當前節點的第五個cd子節點,如果該子節點的type屬性等于classic
          cd[@type and @country] 選擇當前節點的子節點中由type和country兩個屬性的所有cd子節點
          摘自:
          http://61.139.52.111:8090/kj/Manfeel/oltl/session1/session1-p03.htm

          Previous Next

          posted on 2008-03-05 10:16 揚揚 閱讀(1308) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 合江县| 长寿区| 兴国县| 绥阳县| 博白县| 泽州县| 丽江市| 鸡泽县| 兴宁市| 南皮县| 泗洪县| 汕尾市| 五华县| 冕宁县| 佛学| 浦江县| 长白| 岚皋县| 镇沅| 水富县| 中宁县| 云龙县| 惠东县| 安庆市| 抚顺县| 视频| 潜江市| 延吉市| 鄂伦春自治旗| 尉氏县| 准格尔旗| 阳曲县| 云阳县| 灵璧县| 蕲春县| 商南县| 潞城市| 通州市| 西华县| 綦江县| 凤庆县|