• XPath 语法教程(Tutorial_2)


    实例 11
    child轴(axis)包含上下文节点的子元素, 作为默认的轴,可以忽略不写.

    /AAA

    等价于 /child::AAA

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

    在XLab中打开实例 | 树视图 (JPG)

    /child::AAA

    等价于/AAA

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

    在XLab中打开实例 | 树视图 (JPG)

    /AAA/BBB

    等价于/child::AAA/child::BBB

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

    在XLab中打开实例 | 树视图 (JPG)

    /child::AAA/child::BBB

    等价于/AAA/BBB

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

    在XLab中打开实例 | 树视图 (JPG)

    /child::AAA/BBB

    二者都可以被合并

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

    在XLab中打开实例 | 树视图 (JPG)

    --

    实例 12
    descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等, 因此descendant轴不会包含属性和命名空间节点.

    /descendant::*

    选择文档根元素的所有后代.即所有的元素被选择

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

    在XLab中打开实例 | 树视图 (JPG)

    /AAA/BBB/descendant::*

    选择/AAA/BBB的所有后代元素

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

    在XLab中打开实例 | 树视图 (JPG)

    //CCC/descendant::*

    选择在祖先元素中有CCC的所有元素

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

    在XLab中打开实例 | 树视图 (JPG)

    //CCC/descendant::DDD

    选择所有以CCC为祖先元素的DDD元素

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

    //FFF/ancestor::*

    选择FFF元素的祖先节点

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

    //CCC/following-sibling::*

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

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

    //CCC/preceding-sibling::*

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

                   <DDD>
                        <EEE/>
                        <DDD/>

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

    //GGG/preceding::*

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

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

    --

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

    --

    实例 22
    div运算符做浮点除法运算, mod运算符做求余运算, floor函数返回不大于参数的最大整数(趋近于正无穷), ceiling返回不小于参数的最小整数(趋近于负无穷)

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

    选择偶数位置的BBB元素

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

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

    在XLab中打开实例 | 树视图 (JPG)

    --The End--



  • 相关阅读:
    SpringBoot启动类踩坑
    数组作业
    多态的使用
    intellij idea怎么设置软件启动时选择项目进入
    方法的递归调用
    取一个数字数字后4位的和
    day09作业
    java 随机数
    java 方法
    java 循环作业
  • 原文地址:https://www.cnblogs.com/catprayer/p/1730432.html
Copyright © 2020-2023  润新知