我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          XPath詳解

          以下是本人找到的最完整最易懂的XPath教程,不敢私藏,拿出來與大家分享。

          實例 1
          基本的XPath語法類似于在一個文件系統中定位文件,如果路徑以斜線 / 開始, 那么該路徑就表示到一個元素的絕對路徑

          /AAA

          選擇根元素AAA


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

          /AAA/CCC

          選擇AAA的所有CCC子元素


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

          /AAA/DDD/BBB

          選擇AAA的子元素DDD的所有子元素


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



          posted on 2008-04-25 17:02 々上善若水々 閱讀(2405) 評論(0)  編輯  收藏 所屬分類: WebService

          主站蜘蛛池模板: 衡水市| 巫山县| 涞源县| 抚州市| 孙吴县| 富宁县| 邵阳市| 义马市| 集贤县| 隆德县| 车致| 濉溪县| 三穗县| 岢岚县| 开远市| 随州市| 阳春市| 黎平县| 宜都市| 鄱阳县| 龙口市| 彩票| 五原县| 偏关县| 澄城县| 衡南县| 武夷山市| 鄂尔多斯市| 阿合奇县| 呈贡县| 卢龙县| 潼关县| 红桥区| 尤溪县| 焉耆| 广昌县| 苍溪县| 南通市| 神农架林区| 九台市| 肇州县|