Posted on 2006-06-03 11:31
叶舟 阅读(218)
评论(0) 编辑 收藏 所属分类:
XML
http://www.lapuasi.com/doc/xpath/
XPath 同样也是 w3c 的标准之一,他的主要目的是为 xslt 和 xpointer 提供共用的统一的语法,在 XML 文档中进行信息的寻址和数据的检索。他提供了对 string,number,booleans 基本数据类型的操作功能。 XPath 使用类似于普通的文件系统寻址方式,对 XML 中的数据进行匹配(类似于 "/bookstore/book/")。并且 XPath 还提供很多标准库函数,以进行更多复杂的处理操作。
XPath 的语法
XPath 使用路径表达式在 XML 文档中选择节点/节点集合。下面通过一些实例来看看 XPath 的语法。
在下面的例子中,使用如下的 XML 文档:
<?xml
version
="1.0"
encoding
="ISO-8859-1"?>
<
bookstore
>
<book>
<titlelang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<titlelang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
对该 XML 可用如下的路径表达式进行数据的检索:
- '/bookstore/book'
检索根节点( bookstore )下的 book 节点
- '//book'
检索文档中所有的 book 节点,不管该节点在 xml 中的什么位置。对于上个例子来说,就是所有 '/bookstore/book' 节点 (当然,如果节点下如果还有 book 节点,那么同样会选择出来)
- '//@lang'
检索文档中所有名为 lang 的属性,@ 表示属性
还可以利用谓词来进行查询:
- '/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"]'
检索所有拥有一个名为 lang,值为 eng 的属性的 title 节点
- '/bookstore/book[price>35.00]/title'
检索所有价钱大于 35 的 book 的 title 节点
还可以使用*,@*,node()来检索未知的节点:
- '/bookstore/*'
检索 bookstore 的所有子节点
- '//*'
检索文档中的所有节点.
- '//title[@*]'
检索具有任意属性的 title 节点
还可以使用'|'来表示对从多个路径表达式来得到结果集:
- '//book/price | //book/title'
检索所有 book 节点下的 price 节点和 title 节点
XPath 的操作符和函数
XPath 提供了 "+,-,*,div,>=,<=,or,and" 等操作符进行算术和逻辑的运算。如: '/bookstore/book[price>20 and price<=50]'
关于 XPath 操作符的详细信息。
参考: http://www.w3schools.com/xpath/xpath_operators.asp
XPath 还提供了数百个库函数,包括字符串,数字,错误等处理的函数。以提供强大的功能。
参考: http://www.w3schools.com/xpath/xpath_functions.asp