/ 绝对路径,从根元素开始
// 相对路径,递归查找所有子孙
. 当前层
.. 上一层
* 通配符,表示任意
一个元素是一个单独的个体,它有属性,有内容值
[] 谓语,里面跟的是条件
条件支持算数运算+-*/><
条件支持逻辑运算 and or
text() 取文本值用,不加@因为它是个函数
常用函数:
contains 包含,写法是括号加两个入参contains(a,b)a包含b
text() 是取文本值,也可以当做一个查询条件
last() 取末尾
last()-1 倒数第二
starts-with() 表示以XX开头,写法是括号加两个入参
not() 表示否定,把内容全包进去not(contains(a,b))a不包含b
练习:
地址:http://www.w3school.com.cn/example/xmle/books.xml
1.选取 书店里 所有书的详细信息
//book
2.选取 所有书的标题,所有书的分类签
选取 所有书的标题//book/title/text()
所有书的分类签//book/@category
3.选取 第一本书的定价
//book[1]/price[text()]
4.选取 最后一本书的作者
//book[last()]/author/text()
5.选取 倒数第二本书的 分类标签
//book[last()-1]/@category
6.选取 定价高于35的书的标题
//book/price[text()>35]/../title/text()
7.选取 定价在30到40之间的书的标题
//book/price[text()>30 and text()<40]/../title/text()
8.选取 作者多于一个的书的标题
//book[count(author)>1]/title/text()
9.选取 作者多于一个的书 只列出所有作者名
//book[count(author)>1]/author
10.选取 分类是web 且价格低于40的书
//book[@category='web']/price[text()<40]/..
11.选取 标题名称包含X的 所有书的定价
//book/title[(contains(text(),'X'))]/../price/text()
12.选取 分类是web 且作者不包括James的 作者名
//book[@category='web']/author[not(contains(text(),'James'))]/text()