C# xpath XPath最通俗的教程(ZZ)

XPath最通俗的教程(ZZ)

  如下是本人找到的最完整最易懂的XPath教程,不敢私藏,拿出來與你們分享。幫我點旁邊的google廣告呀。

實例 1
基本的XPath語法相似於在一個文件系統中定位文件,若是路徑以斜線 / 開始, 那麼該路徑就表示到一個元素的絕對路徑
html

/AAA函數

選擇根元素AAApost


     <
AAA> 
          <BBB/> 
          <CCC/> 
          <BBB/> 
          <BBB/> 
          <DDD> 
               <BBB/> 
          </DDD> 
          <CCC/> 
     </
AAA>google

 

/AAA/CCCurl

選擇AAA的全部CCC子元素spa


     <AAA> 
          <BBB/> 
          <
CCC/> 
          <BBB/> 
          <BBB/> 
          <DDD> 
               <BBB/> 
          </DDD> 
          <
CCC/> 
     </AAA>
orm

 

/AAA/DDD/BBBhtm

選擇AAA的子元素DDD的全部子元素blog


     <AAA> 
          <BBB/> 
          <CCC/> 
          <BBB/> 
          <BBB/> 
          <DDD> 
               <
BBB/> 
          </DDD> 
          <CCC/> 
     </AAA>
教程

 

 

實例 2

若是路徑以雙斜線 // 開頭, 則表示選擇文檔中全部知足雙斜線//以後規則的元素(不管層級關係)

 

//BBB

選擇全部BBB元素


     <AAA> 
          <
BBB/> 
          <CCC/> 
          <
BBB/> 
          <DDD> 
               <
BBB/> 
          </DDD> 
          <CCC> 
               <DDD> 
                    <
BBB/> 
                    <
BBB/> 
               </DDD> 
          </CCC> 
     </AAA>

 

//DDD/BBB

選擇全部父元素是DDD的BBB元素


     <AAA> 
          <BBB/> 
          <CCC/> 
          <BBB/> 
          <DDD> 
               <
BBB/> 
          </DDD> 
          <CCC> 
               <DDD> 
                    <
BBB/> 
                    <
BBB/> 
               </DDD> 
          </CCC> 
     </AAA>

 

 

實例 3

星號 * 表示選擇全部由星號以前的路徑所定位的元素

 

/AAA/CCC/DDD/*

選擇全部路徑依附於/AAA/CCC/DDD的元素


     <AAA> 
          <XXX> 
               <DDD> 
                    <BBB/> 
                    <BBB/> 
                    <EEE/> 
                    <FFF/> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD> 
                    <
BBB/> 
                    <
BBB/> 
                    <
EEE/> 
                    <
FFF/> 
               </DDD> 
          </CCC> 
          <CCC> 
               <BBB> 
                    <BBB> 
                         <BBB/> 
                    </BBB> 
               </BBB> 
          </CCC> 
     </AAA>

 

/*/*/*/BBB

選擇全部的有3個祖先元素的BBB元素


     <AAA> 
          <XXX> 
               <DDD> 
                    <
BBB/> 
                    <
BBB/> 
                    <EEE/> 
                    <FFF/> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD> 
                    <
BBB/> 
                    <
BBB/> 
                    <EEE/> 
                    <FFF/> 
               </DDD> 
          </CCC> 
          <CCC> 
               <BBB> 
                    <
BBB> 
                         <BBB/> 
                    </
BBB> 
               </BBB> 
          </CCC> 
     </AAA>

 

//*

選擇全部元素


     <
AAA> 
          <
XXX> 
               <
DDD> 
                    <
BBB/> 
                    <
BBB/> 
                    <
EEE/> 
                    <
FFF/> 
               </
DDD> 
          </
XXX> 
          <
CCC> 
               <
DDD> 
                    <
BBB/> 
                    <
BBB/> 
                    <
EEE/> 
                    <
FFF/> 
               </
DDD> 
          </
CCC> 
          <
CCC> 
               <
BBB> 
                    <
BBB> 
                         <
BBB/> 
                    </
BBB> 
               </
BBB> 
          </
CCC> 
     </
AAA>

 

 

 

實例 4

方塊號裏的表達式能夠進一步的指定元素, 其中數字表示元素在選擇集裏的位置, 而last()函數則表示選擇集中的最後一個元素.

 

/AAA/BBB[1]

選擇AAA的第一個BBB子元素


     <AAA> 
          <
BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
     </AAA>

 

/AAA/BBB[last()]

選擇AAA的最後一個BBB子元素


     <AAA> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <
BBB/> 
     </AAA>

 

 

 

實例 5

//@id

選擇全部的id屬性


     <AAA> 
          <BBB
 id = "b1"/> 
          <BBB
 id = "b2"/> 
          <BBB name = "bbb"/> 
          <BBB/> 
     </AAA>

 

//BBB[@id]

選擇有id屬性的BBB元素


     <AAA> 
          <
BBB id = "b1"/> 
          <
BBB id = "b2"/> 
          <BBB name = "bbb"/> 
          <BBB/> 
     </AAA>

 

//BBB[@name]

選擇有name屬性的BBB元素


     <AAA> 
          <BBB id = "b1"/> 
          <BBB id = "b2"/> 
          <
BBB name = "bbb"/> 
          <BBB/> 
     </AAA>

 

//BBB[@*]

選擇有任意屬性的BBB元素


     <AAA> 
          <
BBB id = "b1"/> 
          <
BBB id = "b2"/> 
          <
BBB name = "bbb"/> 
          <BBB/> 
     </AAA>

 

//BBB[not(@*)]

選擇沒有屬性的BBB元素


     <AAA> 
          <BBB id = "b1"/> 
          <BBB id = "b2"/> 
          <BBB name = "bbb"/> 
          <
BBB/> 
     </AAA>

 

 

 

實例 6

屬性的值能夠被用來做爲選擇的準則, normalize-space函數刪除了前部和尾部的空格, 而且把連續的空格串替換爲一個單一的空格

 

//BBB[@id='b1']

選擇含有屬性id且其值爲'b1'的BBB元素


     <AAA> 
          <
BBB id = "b1"/> 
          <BBB name = " bbb "/> 
          <BBB name = "bbb"/> 
     </AAA>

 

//BBB[@name='bbb']

選擇含有屬性name且其值爲'bbb'的BBB元素


     <AAA> 
          <BBB id = "b1"/> 
          <BBB name = " bbb "/> 
          <
BBB name = "bbb"/> 
     </AAA>

 

//BBB[normalize-space(@name)='bbb']

選擇含有屬性name且其值(在用normalize-space函數去掉先後空格後)爲'bbb'的BBB元素


     <AAA> 
          <BBB id = "b1"/> 
          <
BBB name = " bbb "/> 
          <
BBB name = "bbb"/> 
     </AAA>

 

 

 

實例 7

count()函數能夠計數所選元素的個數

 

//*[count(BBB)=2]

選擇含有2個BBB子元素的元素


     <AAA> 
          <CCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </CCC> 
          <
DDD> 
               <BBB/> 
               <BBB/> 
          </
DDD> 
          <EEE> 
               <CCC/> 
               <DDD/> 
          </EEE> 
     </AAA>

 

//*[count(*)=2]

選擇含有2個子元素的元素


     <AAA> 
          <CCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </CCC> 
          <
DDD> 
               <BBB/> 
               <BBB/> 
          </
DDD> 
          <
EEE> 
               <CCC/> 
               <DDD/> 
          </
EEE> 
     </AAA>

 

//*[count(*)=3]

選擇含有3個子元素的元素


     <
AAA> 
          <
CCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </
CCC> 
          <DDD> 
               <BBB/> 
               <BBB/> 
          </DDD> 
          <EEE> 
               <CCC/> 
               <DDD/> 
          </EEE> 
     </
AAA>

 

 

 

實例 8

name()函數返回元素的名稱, start-with()函數在該函數的第一個參數字符串是以第二個參數字符開始的狀況返回true, contains()函數當其第一個字符串參數包含有第二個字符串參數時返回true.

 

//*[name()='BBB']

選擇全部名稱爲BBB的元素(這裏等價於//BBB)


     <AAA> 
          <BCC> 
               <
BBB/> 
               <
BBB/> 
               <
BBB/> 
          </BCC> 
          <DDB> 
               <
BBB/> 
               <
BBB/> 
          </DDB> 
          <BEC> 
               <CCC/> 
               <DBD/> 
          </BEC> 
     </AAA>

 

//*[starts-with(name(),'B')]

選擇全部名稱以"B"起始的元素


     <AAA> 
          <
BCC> 
               <
BBB/> 
               <
BBB/> 
               <
BBB/> 
          </
BCC> 
          <DDB> 
               <
BBB/> 
               <
BBB/> 
          </DDB> 
          <
BEC> 
               <CCC/> 
               <DBD/> 
          </
BEC> 
     </AAA>

 

//*[contains(name(),'C')]

選擇全部名稱包含"C"的元素


     <AAA> 
          <
BCC> 
               <BBB/> 
               <BBB/> 
               <BBB/> 
          </
BCC> 
          <DDB> 
               <BBB/> 
               <BBB/> 
          </DDB> 
          <
BEC> 
               <
CCC/> 
               <DBD/> 
          </
BEC> 
     </AAA>

 

 

 

實例 10

多個路徑能夠用分隔符 | 合併在一塊兒

 

//CCC | //BBB

選擇全部的CCC和BBB元素


     <AAA> 
          <
BBB/> 
          <
CCC/> 
          <DDD> 
               <
CCC/> 
          </DDD> 
          <EEE/> 
     </AAA>

 

/AAA/EEE | //BBB

選擇全部的BBB元素和全部是AAA的子元素的EEE元素


     <AAA> 
          <
BBB/> 
          <CCC/> 
          <DDD> 
               <CCC/> 
          </DDD> 
          <
EEE/> 
     </AAA>

 

/AAA/EEE | //DDD/CCC | /AAA | //BBB

能夠合併的路徑數目沒有限制


     <
AAA> 
          <
BBB/> 
          <CCC/> 
          <DDD> 
               <
CCC/> 
          </DDD> 
          <
EEE/> 
     </
AAA>

 

 

 

實例 11

child軸(axis)包含上下文節點的子元素, 做爲默認的軸,能夠忽略不寫.

 

/AAA

等價於 /child::AAA


     <
AAA> 
          <BBB/> 
          <CCC/> 
     </
AAA>

 

/child::AAA

等價於/AAA


     <
AAA> 
          <BBB/> 
          <CCC/> 
     </
AAA>

 

/AAA/BBB

等價於/child::AAA/child::BBB


     <AAA> 
          <
BBB/> 
          <CCC/> 
     </AAA>

 

/child::AAA/child::BBB

等價於/AAA/BBB


     <AAA> 
          <
BBB/> 
          <CCC/> 
     </AAA>

 

/child::AAA/BBB

兩者均可以被合併


     <AAA> 
          <
BBB/> 
          <CCC/> 
     </AAA>

 

 

 

 

實例 12

descendant (後代)軸包含上下文節點的後代,一個後代是指子節點或者子節點的子節點等等, 所以descendant軸不會包含屬性和命名空間節點.

 

/descendant::*

選擇文檔根元素的全部後代.即全部的元素被選擇


     <
AAA> 
          <
BBB> 
               <
DDD> 
                    <
CCC> 
                         <
DDD/> 
                         <
EEE/> 
                    </
CCC> 
               </
DDD> 
          </
BBB> 
          <
CCC> 
               <
DDD> 
                    <
EEE> 
                         <
DDD> 
                              <
FFF/> 
                         </
DDD> 
                    </
EEE> 
               </
DDD> 
          </
CCC> 
     </
AAA>

 

/AAA/BBB/descendant::*

選擇/AAA/BBB的全部後代元素


     <AAA> 
          <BBB> 
               <
DDD> 
                    <
CCC> 
                         <
DDD/> 
                         <
EEE/> 
                    </
CCC> 
               </
DDD> 
          </BBB> 
          <CCC> 
               <DDD> 
                    <EEE> 
                         <DDD> 
                              <FFF/> 
                         </DDD> 
                    </EEE> 
               </DDD> 
          </CCC> 
     </AAA>

 

//CCC/descendant::*

選擇在祖先元素中有CCC的全部元素


     <AAA> 
          <BBB> 
               <DDD> 
                    <CCC> 
                         <
DDD/> 
                         <
EEE/> 
                    </CCC> 
               </DDD> 
          </BBB> 
          <CCC> 
               <
DDD> 
                    <
EEE> 
                         <
DDD> 
                              <
FFF/> 
                         </
DDD> 
                    </
EEE> 
               </
DDD> 
          </CCC> 
     </AAA>

 

//CCC/descendant::DDD

選擇全部以CCC爲祖先元素的DDD元素


     <AAA> 
          <BBB> 
               <DDD> 
                    <CCC> 
                         <
DDD/> 
                         <EEE/> 
                    </CCC> 
               </DDD> 
          </BBB> 
          <CCC> 
               <
DDD> 
                    <EEE> 
                         <
DDD> 
                              <FFF/> 
                         </
DDD> 
                    </EEE> 
               </
DDD> 
          </CCC> 
     </AAA>

 

 

 

 

實例 13

parent軸(axis)包含上下文節點的父節點, 若是有父節點的話

 

//DDD/parent::*

選擇DDD元素的全部父節點


     <AAA> 
          <
BBB> 
               <DDD> 
                    <
CCC> 
                         <DDD/> 
                         <EEE/> 
                    </
CCC> 
               </DDD> 
          </
BBB> 
          <
CCC> 
               <DDD> 
                    <
EEE> 
                         <DDD> 
                              <FFF/> 
                         </DDD> 
                    </
EEE> 
               </DDD> 
          </
CCC> 
     </AAA>

 

 

 

 

實例 14

ancestor軸(axis)包含上下節點的祖先節點, 該祖先節點由其上下文節點的父節點以及父節點的父節點等等諸如此類的節點構成,因此ancestor軸老是包含有根節點,除非上下文節點就是根節點自己.

 

/AAA/BBB/DDD/CCC/EEE/ancestor::*

選擇一個絕對路徑上的全部節點


     <
AAA> 
          <
BBB> 
               <
DDD> 
                    <
CCC> 
                         <DDD/> 
                         <EEE/> 
                    </
CCC> 
               </
DDD> 
          </
BBB> 
          <CCC> 
               <DDD> 
                    <EEE> 
                         <DDD> 
                              <FFF/> 
                         </DDD> 
                    </EEE> 
               </DDD> 
          </CCC> 
     </
AAA>

 

//FFF/ancestor::*

選擇FFF元素的祖先節點


     <
AAA> 
          <BBB> 
               <DDD> 
                    <CCC> 
                         <DDD/> 
                         <EEE/> 
                    </CCC> 
               </DDD> 
          </BBB> 
          <
CCC> 
               <
DDD> 
                    <
EEE> 
                         <
DDD> 
                              <FFF/> 
                         </
DDD> 
                    </
EEE> 
               </
DDD> 
          </
CCC> 
     </
AAA>

 

 

 

 

實例 15

following-sibling軸(axis)包含上下文節點以後的全部兄弟節點

 

/AAA/BBB/following-sibling::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <DDD/> 
          </BBB> 
          <
XXX> 
               <DDD> 
                    <EEE/> 
                    <DDD/> 
                    <CCC/> 
                    <FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </DDD> 
          </
XXX> 
          <
CCC> 
               <DDD/> 
          </
CCC> 
     </AAA>

 

//CCC/following-sibling::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <
DDD/> 
          </BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <DDD/> 
                    <CCC/> 
                    <
FFF/> 
                    <
FFF> 
                         <GGG/> 
                    </
FFF> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

 

 

 

實例 16

preceding-sibling 軸(axis)包含上下文節點以前的全部兄弟節點

 

/AAA/XXX/preceding-sibling::*

 


     <AAA> 
          <
BBB> 
               <CCC/> 
               <DDD/> 
          </
BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <DDD/> 
                    <CCC/> 
                    <FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

//CCC/preceding-sibling::*

 


     <AAA> 
          <
BBB> 
               <CCC/> 
               <DDD/> 
          </
BBB> 
          <
XXX> 
               <DDD> 
                    <
EEE/> 
                    <
DDD/> 
                    <CCC/> 
                    <FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </DDD> 
          </
XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

 

 

 

實例 17

following軸(axis)包含同一文檔中按文檔順序位於上下文節點以後的全部節點, 除了祖先節點,屬性節點和命名空間節點

 

/AAA/XXX/following::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ> 
                    <DDD/> 
                    <DDD> 
                         <EEE/> 
                    </DDD> 
               </ZZZ> 
               <FFF> 
                    <GGG/> 
               </FFF> 
          </BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <DDD/> 
                    <CCC/> 
                    <FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <
CCC> 
               <
DDD/> 
          </
CCC> 
     </AAA>

 

//ZZZ/following::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ> 
                    <DDD/> 
                    <DDD> 
                         <EEE/> 
                    </DDD> 
               </ZZZ> 
               <
FFF> 
                    <
GGG/> 
               </
FFF> 
          </BBB> 
          <
XXX> 
               <
DDD> 
                    <
EEE/> 
                    <
DDD/> 
                    <
CCC/> 
                    <
FFF/> 
                    <
FFF> 
                         <
GGG/> 
                    </
FFF> 
               </
DDD> 
          </
XXX> 
          <
CCC> 
               <
DDD/> 
          </
CCC> 
     </AAA>

 

 

 

 

實例 18

preceding(axis)包含同一文檔中按文檔順序位於上下文節點以前的全部節點, 除了祖先節點,屬性節點和命名空間節點

 

/AAA/XXX/preceding::*

 


     <AAA> 
          <
BBB> 
               <
CCC/> 
               <
ZZZ> 
                    <
DDD/> 
               </
ZZZ> 
          </
BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <DDD/> 
                    <CCC/> 
                    <FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

//GGG/preceding::*

 


     <AAA> 
          <
BBB> 
               <
CCC/> 
               <
ZZZ> 
                    <
DDD/> 
               </
ZZZ> 
          </
BBB> 
          <XXX> 
               <DDD> 
                    <
EEE/> 
                    <
DDD/> 
                    <
CCC/> 
                    <
FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

 

 

 

實例 19

descendant-or-self 軸(axis)包含上下文節點自己和該節點的後代節點

 

/AAA/XXX/descendant-or-self::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ> 
                    <DDD/> 
               </ZZZ> 
          </BBB> 
          <
XXX> 
               <
DDD> 
                    <
EEE/> 
                    <
DDD/> 
                    <
CCC/> 
                    <
FFF/> 
                    <
FFF> 
                         <
GGG/> 
                    </
FFF> 
               </
DDD> 
          </
XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

//CCC/descendant-or-self::*

 


     <AAA> 
          <BBB> 
               <
CCC/> 
               <ZZZ> 
                    <DDD/> 
               </ZZZ> 
          </BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <DDD/> 
                    <
CCC/> 
                    <FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <
CCC> 
               <
DDD/> 
          </
CCC> 
     </AAA>

 

 

 

 

實例 20

ancestor-or-self 軸(axis)包含上下文節點自己和該節點的祖先節點

 

/AAA/XXX/DDD/EEE/ancestor-or-self::*

 


     <
AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ> 
                    <DDD/> 
               </ZZZ> 
          </BBB> 
          <
XXX> 
               <
DDD> 
                    <
EEE/> 
                    <DDD/> 
                    <CCC/> 
                    <FFF/> 
                    <FFF> 
                         <GGG/> 
                    </FFF> 
               </
DDD> 
          </
XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </
AAA>

 

//GGG/ancestor-or-self::*

 


     <
AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ> 
                    <DDD/> 
               </ZZZ> 
          </BBB> 
          <
XXX> 
               <
DDD> 
                    <EEE/> 
                    <DDD/> 
                    <CCC/> 
                    <FFF/> 
                    <
FFF> 
                         <
GGG/> 
                    </
FFF> 
               </
DDD> 
          </
XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </
AAA>

 

 

 

 

實例 21

ancestor, descendant, following, preceding 和self軸(axis)分割了XML文檔(忽略屬性節點和命名空間節點), 不能交迭, 而一塊兒使用則包含全部節點

 

//GGG/ancestor::*

 


     <
AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ/> 
          </BBB> 
          <
XXX> 
               <
DDD> 
                    <EEE/> 
                    <
FFF> 
                         <HHH/> 
                         <GGG> 
                              <JJJ> 
                                   <QQQ/> 
                              </JJJ> 
                              <JJJ/> 
                         </GGG> 
                         <HHH/> 
                    </
FFF> 
               </
DDD> 
          </
XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </
AAA>

 

//GGG/descendant::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ/> 
          </BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <FFF> 
                         <HHH/> 
                         <GGG> 
                              <
JJJ> 
                                   <
QQQ/> 
                              </
JJJ> 
                              <
JJJ/> 
                         </GGG> 
                         <HHH/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

//GGG/following::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ/> 
          </BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <FFF> 
                         <HHH/> 
                         <GGG> 
                              <JJJ> 
                                   <QQQ/> 
                              </JJJ> 
                              <JJJ/> 
                         </GGG> 
                         <
HHH/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <
CCC> 
               <
DDD/> 
          </
CCC> 
     </AAA>

 

//GGG/preceding::*

 


     <AAA> 
          <
BBB> 
               <
CCC/> 
               <
ZZZ/> 
          </
BBB> 
          <XXX> 
               <DDD> 
                    <
EEE/> 
                    <FFF> 
                         <
HHH/> 
                         <GGG> 
                              <JJJ> 
                                   <QQQ/> 
                              </JJJ> 
                              <JJJ/> 
                         </GGG> 
                         <HHH/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

//GGG/self::*

 


     <AAA> 
          <BBB> 
               <CCC/> 
               <ZZZ/> 
          </BBB> 
          <XXX> 
               <DDD> 
                    <EEE/> 
                    <FFF> 
                         <HHH/> 
                         <
GGG> 
                              <JJJ> 
                                   <QQQ/> 
                              </JJJ> 
                              <JJJ/> 
                         </
GGG> 
                         <HHH/> 
                    </FFF> 
               </DDD> 
          </XXX> 
          <CCC> 
               <DDD/> 
          </CCC> 
     </AAA>

 

//GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::*

 


     <
AAA> 
          <
BBB> 
               <
CCC/> 
               <
ZZZ/> 
          </
BBB> 
          <
XXX> 
               <
DDD> 
                    <
EEE/> 
                    <
FFF> 
                         <
HHH/> 
                         <
GGG> 
                              <
JJJ> 
                                   <
QQQ/> 
                              </
JJJ> 
                              <
JJJ/> 
                         </
GGG> 
                         <
HHH/> 
                    </
FFF> 
               </
DDD> 
          </
XXX> 
          <
CCC> 
               <
DDD/> 
          </
CCC> 
     </
AAA>

 

 

 

 

實例 22

div運算符作浮點除法運算, mod運算符作求餘運算, floor函數返回不大於參數的最大整數(趨近於正無窮), ceiling返回不小於參數的最小整數(趨近於負無窮)

 

//BBB[position() mod 2 = 0 ]

選擇偶數位置的BBB元素


     <AAA> 
          <BBB/> 
          <
BBB/> 
          <BBB/> 
          <
BBB/> 
          <BBB/> 
          <
BBB/> 
          <BBB/> 
          <
BBB/> 
          <CCC/> 
          <CCC/> 
          <CCC/> 
     </AAA>

 

//BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]

選擇中間的BBB元素


     <AAA> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <
BBB/> 
          <
BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <CCC/> 
          <CCC/> 
          <CCC/> 
     </AAA>

 

//CCC[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]

選擇中間的CCC元素


     <AAA> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <BBB/> 
          <CCC/> 
          <
CCC/> 
          <CCC/>      </AAA>

相關文章
相關標籤/搜索