XPath手册 [源于ZVON]

news/2024/7/10 23:45:20 标签: 文档, div, function, jquery, table, xml
<div id="article_content" class="article_content clearfix"> <div id="content_views" class="htmledit_views"> <div class="postBody">

[[注:]本手册由ZVON版本加工而成,对JQuery感兴趣的朋友可以看一下源代码]

<script src="http://jquery.com/src/jquery-latest.pack.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ var a = 1; var ul = $("#ul"); $("th").each(function() { var o = $(this); var content = o.text(); o.wrap(" "); var aTop = document.createElement("a"); aTop.href ="#top"; aTop.innerText = "回页首"; $(aTop).insertAfter($(this).parents("table")); var li = document.createElement("li"); li = $(li); li.html(" "+content+""); ul.append(li); a++; }) } ) </script> 页首
  • /AAA
  • /AAA/CCC
  • /AAA/DDD/BBB
  • //BBB
  • //DDD/BBB
  • /AAA/CCC/DDD/*
  • /*/*/*/BBB
  • //*
  • /AAA/BBB[1]
  • /AAA/BBB[last()]
  • //@id
  • //BBB[@id]
  • //BBB[@name]
  • //BBB[@*]
  • //BBB[not(@*)]
  • //BBB[@id='b1']
  • //BBB[@name='bbb']
  • //BBB[normalize-space(@name)='bbb']
  • //*[count(BBB)=2]
  • //*[count(*)=2]
  • //*[count(*)=3]
  • //*[name()='BBB']
  • //*[starts-with(name(),'B')]
  • //*[contains(name(),'C')]
  • //*[string-length(name()) = 3]
  • //*[string-length(name()) < 3]
  • //*[string-length(name()) > 3]
  • //CCC | //BBB
  • /AAA/EEE | //BBB
  • /AAA/EEE | //DDD/CCC | /AAA | //BBB
  • /AAA
  • /child::AAA
  • /AAA/BBB
  • /child::AAA/child::BBB
  • /child::AAA/BBB
  • /descendant::*
  • /AAA/BBB/descendant::*
  • //CCC/descendant::*
  • //CCC/descendant::DDD
  • //DDD/parent::*
  • /AAA/BBB/DDD/CCC/EEE/ancestor::*
  • //FFF/ancestor::*
  • /AAA/BBB/following-sibling::*
  • //CCC/following-sibling::*
  • /AAA/XXX/preceding-sibling::*
  • //CCC/preceding-sibling::*
  • /AAA/XXX/following::*
  • //ZZZ/following::*
  • /AAA/XXX/preceding::*
  • //GGG/preceding::*
  • /AAA/XXX/descendant-or-self::*
  • //CCC/descendant-or-self::*
  • /AAA/XXX/DDD/EEE/ancestor-or-self::*
  • //GGG/ancestor-or-self::*
  • //GGG/ancestor::*
  • //GGG/descendant::*
  • //GGG/following::*
  • //GGG/preceding::*
  • //GGG/self::*
  • //GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::*
  • //BBB[position() mod 2 = 0 ]
  • //BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]
  • //CCC[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]
<div class="description"> 基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径 div> <table border="1" cellpadding="5" width="85%">/AAA选择根元素AAA
     <AAA>
          <BBB/>
          <CCC/>
          <BBB/>
          <BBB/>
          <DDD>
               <BBB/>
          </DDD>
          <CCC/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/AAA/CCC选择AAA的所有CCC子元素
     <AAA>
          <BBB/>
          <CCC/>
          <BBB/>
          <BBB/>
          <DDD>
               <BBB/>
          </DDD>
          <CCC/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/AAA/DDD/BBB选择AAA的子元素DDD的所有子元素
     <AAA>
          <BBB/>
          <CCC/>
          <BBB/>
          <BBB/>
          <DDD>
               <BBB/>
          </DDD>
          <CCC/>
     </AAA> table> <div class="description"> 如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系) div> <table border="1" cellpadding="5" width="85%">//BBB选择所有BBB元素
     <AAA>
          <BBB/>
          <CCC/>
          <BBB/>
          <DDD>
               <BBB/>
          </DDD>
          <CCC>
               <DDD>
                    <BBB/>
                    <BBB/>
               </DDD>
          </CCC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//DDD/BBB选择所有父元素是DDD的BBB元素
     <AAA>
          <BBB/>
          <CCC/>
          <BBB/>
          <DDD>
               <BBB/>
          </DDD>
          <CCC>
               <DDD>
                    <BBB/>
                    <BBB/>
               </DDD>
          </CCC>
     </AAA> table> <div class="description"> 星号 * 表示选择所有由星号之前的路径所定位的元素 div> <table border="1" cellpadding="5" width="85%">/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> table> <table border="1" cellpadding="5" width="85%">/*/*/*/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> table> <table border="1" cellpadding="5" width="85%">//*选择所有元素
     <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> table> <div class="description"> 方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素. div> <table border="1" cellpadding="5" width="85%">/AAA/BBB[1]选择AAA的第一个BBB子元素
     <AAA>
          <BBB/>
          <BBB/>
          <BBB/>
          <BBB/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/AAA/BBB[last()]选择AAA的最后一个BBB子元素
     <AAA>
          <BBB/>
          <BBB/>
          <BBB/>
          <BBB/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//@id选择所有的id属性
     <AAA>
          <BBB id = "b1"/>
          <BBB id = "b2"/>
          <BBB name = "bbb"/>
          <BBB/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//BBB[@id]选择有id属性的BBB元素
     <AAA>
          <BBB id = "b1"/>
          <BBB id = "b2"/>
          <BBB name = "bbb"/>
          <BBB/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//BBB[@name]选择有name属性的BBB元素
     <AAA>
          <BBB id = "b1"/>
          <BBB id = "b2"/>
          <BBB name = "bbb"/>
          <BBB/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//BBB[@*]选择有任意属性的BBB元素
     <AAA>
          <BBB id = "b1"/>
          <BBB id = "b2"/>
          <BBB name = "bbb"/>
          <BBB/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//BBB[not(@*)]选择没有属性的BBB元素
     <AAA>
          <BBB id = "b1"/>
          <BBB id = "b2"/>
          <BBB name = "bbb"/>
          <BBB/>
     </AAA> table> <div class="description"> 属性的值可以被用来作为选择的准则, normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格 div> <table border="1" cellpadding="5" width="85%">//BBB[@id='b1']选择含有属性id且其值为'b1'的BBB元素
     <AAA>
          <BBB id = "b1"/>
          <BBB name = " bbb "/>
          <BBB name = "bbb"/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//BBB[@name='bbb']选择含有属性name且其值为'bbb'的BBB元素
     <AAA>
          <BBB id = "b1"/>
          <BBB name = " bbb "/>
          <BBB name = "bbb"/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//BBB[normalize-space(@name)='bbb']选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素
     <AAA>
          <BBB id = "b1"/>
          <BBB name = " bbb "/>
          <BBB name = "bbb"/>
     </AAA> table> <div class="description"> count()函数可以计数所选元素的个数 div> <table border="1" cellpadding="5" width="85%">//*[count(BBB)=2]选择含有2个BBB子元素的元素
     <AAA>
          <CCC>
               <BBB/>
               <BBB/>
               <BBB/>
          </CCC>
          <DDD>
               <BBB/>
               <BBB/>
          </DDD>
          <EEE>
               <CCC/>
               <DDD/>
          </EEE>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//*[count(*)=2]选择含有2个子元素的元素
     <AAA>
          <CCC>
               <BBB/>
               <BBB/>
               <BBB/>
          </CCC>
          <DDD>
               <BBB/>
               <BBB/>
          </DDD>
          <EEE>
               <CCC/>
               <DDD/>
          </EEE>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//*[count(*)=3]选择含有3个子元素的元素
     <AAA>
          <CCC>
               <BBB/>
               <BBB/>
               <BBB/>
          </CCC>
          <DDD>
               <BBB/>
               <BBB/>
          </DDD>
          <EEE>
               <CCC/>
               <DDD/>
          </EEE>
     </AAA> table> <div class="description"> name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true. div> <table border="1" cellpadding="5" width="85%">//*[name()='BBB']选择所有名称为BBB的元素(这里等价于//BBB)
     <AAA>
          <BCC>
               <BBB/>
               <BBB/>
               <BBB/>
          </BCC>
          <DDB>
               <BBB/>
               <BBB/>
          </DDB>
          <BEC>
               <CCC/>
               <DBD/>
          </BEC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//*[starts-with(name(),'B')]选择所有名称以"B"起始的元素
     <AAA>
          <BCC>
               <BBB/>
               <BBB/>
               <BBB/>
          </BCC>
          <DDB>
               <BBB/>
               <BBB/>
          </DDB>
          <BEC>
               <CCC/>
               <DBD/>
          </BEC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//*[contains(name(),'C')]选择所有名称包含"C"的元素
     <AAA>
          <BCC>
               <BBB/>
               <BBB/>
               <BBB/>
          </BCC>
          <DDB>
               <BBB/>
               <BBB/>
          </DDB>
          <BEC>
               <CCC/>
               <DBD/>
          </BEC>
     </AAA> table> <div class="description"> string-length函数返回字符串的字符数,你应该用&lt;替代<, 用&gt;代替> div> <table border="1" cellpadding="5" width="85%">//*[string-length(name()) = 3]选择名字长度为3的元素
     <AAA>
          <Q/>
          <SSSS/>
          <BB/>
          <CCC/>
          <DDDDDDDD/>
          <EEEE/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//*[string-length(name()) < 3]选择名字长度小于3的元素
     <AAA>
          <Q/>
          <SSSS/>
          <BB/>
          <CCC/>
          <DDDDDDDD/>
          <EEEE/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//*[string-length(name()) > 3]选择名字长度大于3的元素
     <AAA>
          <Q/>
          <SSSS/>
          <BB/>
          <CCC/>
          <DDDDDDDD/>
          <EEEE/>
     </AAA> table> <div class="description"> 多个路径可以用分隔符 | 合并在一起 div> <table border="1" cellpadding="5" width="85%">//CCC | //BBB选择所有的CCC和BBB元素
     <AAA>
          <BBB/>
          <CCC/>
          <DDD>
               <CCC/>
          </DDD>
          <EEE/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/AAA/EEE | //BBB选择所有的BBB元素和所有是AAA的子元素的EEE元素
     <AAA>
          <BBB/>
          <CCC/>
          <DDD>
               <CCC/>
          </DDD>
          <EEE/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/AAA/EEE | //DDD/CCC | /AAA | //BBB可以合并的路径数目没有限制
     <AAA>
          <BBB/>
          <CCC/>
          <DDD>
               <CCC/>
          </DDD>
          <EEE/>
     </AAA> table> <div class="description"> child轴(axis)包含上下文节点的子元素, 作为默认的轴,可以忽略不写. div> <table border="1" cellpadding="5" width="85%">/AAA等价于 /child::AAA
     <AAA>
          <BBB/>
          <CCC/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/child::AAA等价于/AAA
     <AAA>
          <BBB/>
          <CCC/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/AAA/BBB等价于/child::AAA/child::BBB
     <AAA>
          <BBB/>
          <CCC/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/child::AAA/child::BBB等价于/AAA/BBB
     <AAA>
          <BBB/>
          <CCC/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/child::AAA/BBB二者都可以被合并
     <AAA>
          <BBB/>
          <CCC/>
     </AAA> table> <div class="description"> descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等, 因此descendant轴不会包含属性和命名空间节点. div> <table border="1" cellpadding="5" width="85%">/descendant::*选择文档根元素的所有后代.即所有的元素被选择
     <AAA>
          <BBB>
               <DDD>
                    <CCC>
                         <DDD/>
                         <EEE/>
                    </CCC>
               </DDD>
          </BBB>
          <CCC>
               <DDD>
                    <EEE>
                         <DDD>
                              <FFF/>
                         </DDD>
                    </EEE>
               </DDD>
          </CCC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">/AAA/BBB/descendant::*选择/AAA/BBB的所有后代元素
     <AAA>
          <BBB>
               <DDD>
                    <CCC>
                         <DDD/>
                         <EEE/>
                    </CCC>
               </DDD>
          </BBB>
          <CCC>
               <DDD>
                    <EEE>
                         <DDD>
                              <FFF/>
                         </DDD>
                    </EEE>
               </DDD>
          </CCC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//CCC/descendant::*选择在祖先元素中有CCC的所有元素
     <AAA>
          <BBB>
               <DDD>
                    <CCC>
                         <DDD/>
                         <EEE/>
                    </CCC>
               </DDD>
          </BBB>
          <CCC>
               <DDD>
                    <EEE>
                         <DDD>
                              <FFF/>
                         </DDD>
                    </EEE>
               </DDD>
          </CCC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//CCC/descendant::DDD选择所有以CCC为祖先元素的DDD元素
     <AAA>
          <BBB>
               <DDD>
                    <CCC>
                         <DDD/>
                         <EEE/>
                    </CCC>
               </DDD>
          </BBB>
          <CCC>
               <DDD>
                    <EEE>
                         <DDD>
                              <FFF/>
                         </DDD>
                    </EEE>
               </DDD>
          </CCC>
     </AAA> table> <div class="description"> parent轴(axis)包含上下文节点的父节点, 如果有父节点的话 div> <table border="1" cellpadding="5" width="85%">//DDD/parent::*选择DDD元素的所有父节点
     <AAA>
          <BBB>
               <DDD>
                    <CCC>
                         <DDD/>
                         <EEE/>
                    </CCC>
               </DDD>
          </BBB>
          <CCC>
               <DDD>
                    <EEE>
                         <DDD>
                              <FFF/>
                         </DDD>
                    </EEE>
               </DDD>
          </CCC>
     </AAA> table> <div class="description"> ancestor轴(axis)包含上下节点的祖先节点, 该祖先节点由其上下文节点的父节点以及父节点的父节点等等诸如此类的节点构成,所以ancestor轴总是包含有根节点,除非上下文节点就是根节点本身. div> <table border="1" cellpadding="5" width="85%">/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> table> <table border="1" cellpadding="5" width="85%">//FFF/ancestor::*选择FFF元素的祖先节点
     <AAA>
          <BBB>
               <DDD>
                    <CCC>
                         <DDD/>
                         <EEE/>
                    </CCC>
               </DDD>
          </BBB>
          <CCC>
               <DDD>
                    <EEE>
                         <DDD>
                              <FFF/>
                         </DDD>
                    </EEE>
               </DDD>
          </CCC>
     </AAA> table> <div class="description"> following-sibling轴(axis)包含上下文节点之后的所有兄弟节点 div> <table border="1" cellpadding="5" width="85%">/AAA/BBB/following-sibling::*

     <AAA>
          <BBB>
               <CCC/>
               <DDD/>
          </BBB>
          <XXX>
               <DDD>
                    <EEE/>
                    <DDD/>
                    <CCC/>
                    <FFF/>
                    <FFF>
                         <GGG/>
                    </FFF>
               </DDD>
          </XXX>
          <CCC>
               <DDD/>
          </CCC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//CCC/following-sibling::*

     <AAA>
          <BBB>
               <CCC/>
               <DDD/>
          </BBB>
          <XXX>
               <DDD>
                    <EEE/>
                    <DDD/>
                    <CCC/>
                    <FFF/>
                    <FFF>
                         <GGG/>
                    </FFF>
               </DDD>
          </XXX>
          <CCC>
               <DDD/>
          </CCC>
     </AAA> table> <div class="description"> preceding-sibling 轴(axis)包含上下文节点之前的所有兄弟节点 div> <table border="1" cellpadding="5" width="85%">/AAA/XXX/preceding-sibling::*

     <AAA>
          <BBB>
               <CCC/>
               <DDD/>
          </BBB>
          <XXX>
               <DDD>
                    <EEE/>
                    <DDD/>
                    <CCC/>
                    <FFF/>
                    <FFF>
                         <GGG/>
                    </FFF>
               </DDD>
          </XXX>
          <CCC>
               <DDD/>
          </CCC>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//CCC/preceding-sibling::*

     <AAA>
          <BBB>
               <CCC/>
               <DDD/>
          </BBB>
          <XXX>
               <DDD>
                    <EEE/>
                    <DDD/>
                    <CCC/>
                    <FFF/>
                    <FFF>
                         <GGG/>
                    </FFF>
               </DDD>
          </XXX>
          <CCC>
               <DDD/>
          </CCC>
     </AAA> table> <div class="description"> following轴(axis)包含同一文档中按文档顺序位于上下文节点之后的所有节点, 除了祖先节点,属性节点和命名空间节点 div> <table border="1" cellpadding="5" width="85%">/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> table> <table border="1" cellpadding="5" width="85%">//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> table> <div class="description"> following轴(axis)包含同一文档中按文档顺序位于上下文节点之前的所有节点, 除了祖先节点,属性节点和命名空间节点 div> <table border="1" cellpadding="5" width="85%">/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> table> <table border="1" cellpadding="5" width="85%">//GGG/preceding::*

     <AAA>
          <BBB>
               <CCC/>
               <ZZZ>
                    <DDD/>
               </ZZZ>
          </BBB>
          <XXX>
               <DDD>
                    <EEE/>
                    <DDD/>
                    <CCC/>
                    <FFF/>
                    <FFF>
                         <GGG/>
                    </FFF>
               </DDD>
          </XXX>
          <CCC>
               <DDD/>
          </CCC>
     </AAA> table> <div class="description"> descendant-or-self 轴(axis)包含上下文节点本身和该节点的后代节点 div> <table border="1" cellpadding="5" width="85%">/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> table> <table border="1" cellpadding="5" width="85%">//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> table> <div class="description"> ancestor-or-self 轴(axis)包含上下文节点本身和该节点的祖先节点 div> <table border="1" cellpadding="5" width="85%">/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> table> <table border="1" cellpadding="5" width="85%">//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> table> <div class="description"> ancestor, descendant, following, preceding 和self轴(axis)分割了XML文档(忽略属性节点和命名空间节点), 不能交迭, 而一起使用则包含所有节点 div> <table border="1" cellpadding="5" width="85%">//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> table> <table border="1" cellpadding="5" width="85%">//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> table> <table border="1" cellpadding="5" width="85%">//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> table> <table border="1" cellpadding="5" width="85%">//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> table> <table border="1" cellpadding="5" width="85%">//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> table> <table border="1" cellpadding="5" width="85%">//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> table> <div class="description"> div运算符做浮点除法运算, mod运算符做求余运算, floor函数返回不大于参数的最大整数(趋近于正无穷), ceiling返回不小于参数的最小整数(趋近于负无穷) div> <table border="1" cellpadding="5" width="85%">//BBB[position() mod 2 = 0 ]选择偶数位置的BBB元素
     <AAA>
          <BBB/>
          <BBB/>
          <BBB/>
          <BBB/>
          <BBB/>
          <BBB/>
          <BBB/>
          <BBB/>
          <CCC/>
          <CCC/>
          <CCC/>
     </AAA> table> <table border="1" cellpadding="5" width="85%">//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> table> <table border="1" cellpadding="5" width="85%">//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> table> div> div> div> <div id="treeSkill">div>

http://www.niftyadmin.cn/n/1412959.html

相关文章

自定义jsr-269注解处理器 Error:服务配置文件不正确,或构造处理程序对象javax.annotation.processing.Processor: Provider not found

出现的原因 自定义处理器还没有被编译就被调用&#xff0c;所以报 not found 在根据配置寻找自定义的注解处理器时&#xff0c;自定义处理器还未被编译解决方式 maven项目可以配置编译插件&#xff0c;在编译项目之前先编译处理器&#xff0c;或者编译项目时跳过执行处理器 参…

linux 学习笔记之文件与管理

前言&#xff1a; 对于windows来说&#xff0c;文件的系统管理都是非常简单的&#xff08;这个应该有一个捂脸&#xff09;&#xff0c;通常就是重命名&#xff0c;复制&#xff0c;移动&#xff0c;删除&#xff0c;查看文件属性&#xff0c;查看文件内容&#xff0c;寻找文件…

Vue单文件组件开发

第一步&#xff1a;配置环境 安装cnpm 1 npm install -g cnpm --registryhttps://registry.npm.taobao.org 安装vue/cli 1 cnpm install -g vue/cli 检查版本是否正确 1 vue --version 使用vue.server和vue.build对*.vue文件进行快速原型开发&#xff0c;需要安装vue serve 1 c…

asp.net操作Meta tages/Style/title/Header

动态添加Meta tages: // Render: <meta name"keywords" content"Some words listed here" /> HtmlMeta meta new HtmlMeta();meta.Name "keywords";meta.Content "Some words listed here";this.Header.Controls.Add(meta);/…

【摘】请问make -j8 和make -j4 是什么意思?什么作用?

看到别人写的Shell脚本中有 make -j8 等字眼&#xff0c;Google了一下&#xff0c;网友说是&#xff1a; make linux kernel/rootfs时候多线程执行。

ASP.NET 定时执行一段代码

在Global.asax启动一条线程就ok了&#xff0c;下面是启动线程定时写文件的例子 Global.asax C# code<% Application Language"C#"%><% Import Namespace"System.IO"%><% Import Namespace"System.Threading"%><script runa…

如何动态代理Controller的接口并注册到SpringMVC中

1、实现对Controller接口的动态代理 Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) public interface MyController {String value() default ""; } Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface MyController…

Javascript基础

Javascript基础 简介 JavaScript&#xff0c;一种直译式脚本语言&#xff0c;是一种动态类型、基于原型的语言&#xff0c;内置支持类别。它的解释器被称为JavaScript引擎&#xff0c;为浏览器的一部分&#xff0c;广泛用于客户端的脚本语言&#xff0c;最早是在HTML网页上使用…