association

          XPath定位路徑

          Previous Next

          一個定位路徑表達(dá)式返回一個節(jié)點(diǎn)集。


          定位路徑表達(dá)式

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

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

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

          定位步驟從左到右,依次按順序計(jì)算。每個步驟根據(jù)當(dāng)前節(jié)點(diǎn)集的節(jié)點(diǎn)計(jì)算。如果定位路徑是絕對的,那么當(dāng)前節(jié)點(diǎn)集包含根節(jié)點(diǎn)。如果定位路徑是相對的,那么當(dāng)前節(jié)點(diǎn)集包含使用表達(dá)式的節(jié)點(diǎn)。定位步驟包括:

          • 一個軸(指定當(dāng)前定位步驟和當(dāng)前節(jié)點(diǎn)選擇的節(jié)點(diǎn)間的樹關(guān)系)
          • 一個節(jié)點(diǎn)測試(指定定位步驟選擇的節(jié)點(diǎn)的節(jié)點(diǎn)類型和擴(kuò)展名)
          • 零或多個預(yù)測(使用表達(dá)式進(jìn)一步抽取定位步驟選定的節(jié)點(diǎn)集)

          一個定位步驟的語法為:

          軸名::節(jié)點(diǎn)測試[預(yù)測]

          示例:

          child::price[price=9.90]


          軸和節(jié)點(diǎn)測試

          一個軸定義相對于當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)集。節(jié)點(diǎn)測試用于識別軸內(nèi)的一個節(jié)點(diǎn)。我們可以通過名或類型來執(zhí)行一個節(jié)點(diǎn)測試。

          軸名 描述
          ancestor

          包含當(dāng)前節(jié)點(diǎn)的所有祖先節(jié)點(diǎn)

          注意: 除非當(dāng)前節(jié)點(diǎn)是根節(jié)點(diǎn),否則這個軸始終包括根節(jié)點(diǎn)

          ancestor-or-self 包括當(dāng)前節(jié)點(diǎn)和所有當(dāng)前節(jié)點(diǎn)的祖先節(jié)點(diǎn)
          attribute 包含當(dāng)前節(jié)點(diǎn)所有的屬性
          child 包含當(dāng)前節(jié)點(diǎn)所有的子節(jié)點(diǎn)
          descendant

          包含當(dāng)前節(jié)點(diǎn)的所有后代節(jié)點(diǎn)

          注意:這個軸不包括屬性或命名空間節(jié)點(diǎn)

          descendant-or-self 包含當(dāng)前節(jié)點(diǎn)本身和所有它的后代節(jié)點(diǎn)
          following 包含文檔中當(dāng)前節(jié)點(diǎn)的結(jié)束標(biāo)記后所有節(jié)點(diǎn)
          following-sibling 包含當(dāng)前節(jié)點(diǎn)后所有的同層節(jié)點(diǎn)

          注意: 如果當(dāng)前節(jié)點(diǎn)是屬性節(jié)點(diǎn)或命名空間節(jié)點(diǎn),那么這個軸為空

          namespace 包含當(dāng)前節(jié)點(diǎn)的所有命名空間節(jié)點(diǎn)
          parent 包含當(dāng)前節(jié)點(diǎn)的所有父節(jié)點(diǎn)
          preceding 包含文檔中當(dāng)前節(jié)點(diǎn)的開始標(biāo)記之前的所有節(jié)點(diǎn)
          preceding-sibling 包含當(dāng)前節(jié)點(diǎn)之前的所有同層節(jié)點(diǎn)

          注意: 如果當(dāng)前節(jié)點(diǎn)是一個屬性節(jié)點(diǎn)或者命名空間節(jié)點(diǎn),那么這個軸為空

          self 當(dāng)前節(jié)點(diǎn)本身

          示例

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

          選擇當(dāng)前節(jié)點(diǎn)的孫子節(jié)點(diǎn)中所有price元素

          / 選擇文檔根


          預(yù)測

          一個預(yù)測過濾一個節(jié)點(diǎn)集為一個新的節(jié)點(diǎn)集。預(yù)測放在方括號([])中。

          示例

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


          定位路徑縮寫語法

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

          最重要的縮寫為: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的簡寫

          示例

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

          Previous Next

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


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


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 墨玉县| 太保市| 盘锦市| 寿阳县| 湄潭县| 井研县| 灵台县| 八宿县| 河南省| 辉南县| 益阳市| 辽宁省| 衡南县| 弥勒县| 格尔木市| 长治县| 苍梧县| 嘉禾县| 新密市| 固镇县| 隆化县| 武安市| 临夏县| 西乡县| 石柱| 清河县| 府谷县| 凤凰县| 启东市| 吉木萨尔县| 岳西县| 山西省| 民权县| 林甸县| 从江县| 宝鸡市| 图木舒克市| 巴林左旗| 揭东县| 镇坪县| 环江|