[整理]XPath小结
实例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
 <title lang="eng">Harry Potter</title>
 <price>29.99</price>
</book>
<book>
 <title lang="eng">Learning XML</title>
 <price>39.95</price>
</book>
</bookstore>
(1)常用路径表达式
| 
 路径表达式  | 
 结果  | 
| 
 bookstore  | 
 选取 bookstore 元素的所有子节点 ----------------------------这个只能从根元素开始选  | 
| 
 /bookstore  | 
 选取根元素 bookstore 注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!  | 
| 
 bookstore/book  | 
 选取所有属于 bookstore 的子元素的 book 元素。  | 
| 
 //book  | 
 选取所有 book 子元素,而不管它们在文档中的位置。  | 
| 
 bookstore//book  | 
 选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下的什么位置。  | 
| 
 //@lang  | 
 选取所有名为 lang 的属性。  | 
(2)谓语表达式
| 
 路径表达式  | 
 结果  | 
| 
 /bookstore/book[1]  | 
 选取属于 bookstore 子元素的第一个 book 元素。  | 
| 
 /bookstore/book[last()]  | 
 选取属于 bookstore 子元素的最后一个 book 元素。  | 
| 
 /bookstore/book[last()-1]  | 
 选取属于 bookstore 子元素的倒数第二个 book 元素。  | 
| 
 /bookstore/book[position()<3]  | 
 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。  | 
| 
 //title[@lang]  | 
 选取所有拥有名为 lang 的属性的 title 元素。  | 
| 
 //title[@lang='eng']  | 
 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。  | 
| 
 /bookstore/book[price>35.00]  | 
 选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.00。  | 
| 
 /bookstore/book[price>35.00]/title  | 
 选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 35.00。  | 
(3) 未知结点
| 
 路径表达式  | 
 结果  | 
| 
 /bookstore/*  | 
 选取 bookstore 元素的所有子节点  | 
| 
 //*  | 
 选取文档中的所有元素  | 
| 
 //title[@*]  | 
 选取所有带有属性的 title 元素。  | 
(4)路径复选
| 
 路径表达式  | 
 结果  | 
| 
 //book/title | //book/price  | 
 选取所有 book 元素的 title 和 price 元素。  | 
| 
 //title | //price  | 
 选取所有文档中的 title 和 price 元素。  | 
| 
 /bookstore/book/title | //price  | 
 选取所有属于 bookstore 元素的 book 元素的 title 元素,以及文档中所有的 price 元素。  | 
(5) Xpath轴
| 
 例子  | 
 结果  | 
| 
 child::book  | 
 选取所有属于当前节点的子元素的 book 节点  | 
| 
 attribute::lang  | 
 选取当前节点的 lang 属性  | 
| 
 child::*  | 
 选取当前节点的所有子元素  | 
| 
 attribute::*  | 
 选取当前节点的所有属性  | 
| 
 child::text()  | 
 选取当前节点的所有文本子节点  | 
| 
 child::node()  | 
 选取当前节点的所有子节点  | 
| 
 descendant::book  | 
 选取当前节点的所有 book 后代  | 
| 
 ancestor::book  | 
 选择当前节点的所有 book 先辈  | 
| 
 ancestor-or-self::book  | 
 选取当前节点的所有book先辈以及当前节点(假如此节点是book节点的话)  | 
| 
 child::*/child::price  | 
 选取当前节点的所有 price 孙。  | 
(6)XPath运算符
| 
 运算符  | 
 描述  | 
 实例  | 
 返回值  | 
| 
 |  | 
 计算两个节点集  | 
 //book | //cd  | 
 返回所有带有 book 和 ck 元素的节点集  | 
| 
 +  | 
 加法  | 
 6 + 4  | 
 10  | 
| 
 -  | 
 减法  | 
 6 - 4  | 
 2  | 
| 
 *  | 
 乘法  | 
 6 * 4  | 
 24  | 
| 
 div  | 
 除法  | 
 8 div 4  | 
 2  | 
| 
 =  | 
 等于  | 
 price=9.80  | 
 
  | 
| 
 !=  | 
 不等于  | 
 price!=9.80  | 
 
  | 
| 
 <  | 
 小于  | 
 price<9.80  | 
 
  | 
| 
 <=  | 
 小于或等于  | 
 price<=9.80  | 
 
  | 
| 
 >  | 
 大于  | 
 price>9.80  | 
 
  | 
| 
 >=  | 
 大于或等于  | 
 price>=9.80  | 
 
  | 
| 
 or  | 
 或  | 
 price=9.80 or price=9.70  | 
 
  | 
| 
 and  | 
 与  | 
 price>9.00 and price<9.90  | 
 
  | 
| 
 mod  | 
 计算除法的余数  | 
 5 mod 2  | 
 1  | 
(7)常用函数
| 
 例子  | 
 结果  | 
| 
 ("/bookstore/book/price/text()")  | 
 返回price结点的内容  | 
                    
                
                
            
        
浙公网安备 33010602011771号