XPath学习:轴(14)——总结

     XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

     XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。

     推荐一个挺不错的网站:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html  里面有很不错的例子,下面的例子中红色字体表示使用对 应语法获取的元素(或属性)。

     XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:

     1、child  选取当前节点的所有子元素

     2、parent  选取当前节点的父节点

     3、descendant 选取当前节点的所有后代元素(子、孙等)

     4、ancestor  选取当前节点的所有先辈(父、祖父等)

     5、descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身

     6、ancestor-or-self  选取当前节点的所有先辈(父、祖父等)以及当前节点本身

     7、preceding-sibling 选取当前节点之前的所有同级节点

     8、following-sibling 选取当前节点之后的所有同级节点

     9、preceding   选取文档中当前节点的开始标签之前的所有节点

     10、following   选取文档中当前节点的结束标签之后的所有节点

     11、self 选取当前节点

     12、attribute  选取当前节点的所有属性

     13、namespace 选取当前节点的所有命名空间节点

 

     XPath轴指定上下文的节点和要选择节点的关系。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/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/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/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>
posted @ 2009-09-10 22:58  Asharp  阅读(1667)  评论(0编辑  收藏  举报