/ |
Document Root文档根. |
/* |
选择文档根下面的所有元素节点,即根节点(XML文档只有一个根节点) |
/node() |
根元素下所有的节点(包括文本节点,注释节点等) |
/text() |
查找文档根节点下的所有文本节点 |
/messages/message |
messages节点下的所有message节点 |
/messages/message[1] |
messages节点下的第一个message节点 |
/messages/message[1]/self::node() |
第一个message节点(self轴表示自身,node()表示选择所有节点) |
/messages/message[1]/node() |
第一个message节点下的所有子节点 |
/messages/message[1]/*[last()] |
第一个message节点的最后一个子节点 |
/messages/message[1]/[last()] |
Error,谓词前必须是节点或节点集 |
/messages/message[1]/node()[last()] |
第一个message节点的最后一个子节点 |
/messages/message[1]/text() |
第一个message节点的所有子节点 |
/messages/message[1]//text() |
第一个message节点下递归下降查找所有的文本节点(无限深度) |
/messages/message[1] /child::node() |
|
/messages/message[1] /node() |
|
/messages/message[position()=1]/node() |
|
//message[@id=1] /node() |
第一个message节点下的所有子节点 |
//message[@id=1] //child::node() |
递归所有子节点(无限深度) |
//message[position()=1]/node() |
选择id=1的message节点以及id=0的message节点 |
/messages/message[1] /parent::* |
Messages节点 |
/messages/message[1]/body/attachments/parent::node() |
|
/messages/message[1]/body/attachments/parent::* /messages/message[1]/body/attachments/.. |
attachments节点的父节点。父节点只有一个,所以node()和* 返回结果一样。(..也表示父节点. 表示自身节点) |
//message[@id=0]/ancestor::* |
Ancestor轴表示所有的祖辈,父,祖父等。向上递归 |
//message[@id=0]/ancestor-or-self::* |
向上递归,包含自身 |
//message[@id=0]/ancestor::node() |
对比使用*,多一个文档根元素(Document root) |
/messages/message[1]/descendant::node() |
|
//messages/message[1]//node() |
递归下降查找message节点的所有节点 |
/messages/message[1]/sender/following::* |
查找第一个message节点的sender节点后的所有同级节点,并对每一个同级节点递归向下查找。 |
//message[@id=1]/sender/following-sibling::* |
查找id=1的message节点的sender节点的所有后续的同级节点。 |
//message[@id=1]/datetime/@date
|
查找id=1的message节点的datetime节点的date属性 |
//message[@id=1]/datetime[@date] |
|
//message/datetime[attribute::date] |
查找id=1的message节点的所有含有date属性的datetime节点 |
//message[datetime] |
查找所有含有datetime节点的message节点 |
//message/datetime/attribute::* |
|
//message/datetime/attribute::node() |
|
//message/datetime/@* |
返回message节点下datetime节点的所有属性节点 |
//message/datetime[attribute::*] |
|
//message/datetime[attribute::node()] |
|
//message/datetime[@*] |
|
//message/datetime[@node()] |
选择所有含有属性的datetime节点 |
//attribute::* |
选择根节点下的所有属性节点 |
//message[@id=0]/body/preceding::node() |
顺序选择body节点所在节点前的所有同级节点。(查找顺序为:先找到body节点的顶级节点(根节点),得到根节点标签前的所有同级节点,执行完成后继续向下一级,顺序得到该节点标签前的所有同级节点,依次类推。)注意:查找同级节点是顺序查找,而不是递归查找。 |
//message[@id=0]/body/preceding-sibling::node() |
顺序查找body标签前的所有同级节点。(和上例一个最大的区别是:不从最顶层开始到body节点逐层查找。我们可以理解成少了一个循环,而只查找当前节点前的同级节点) |
//message[@id=1]//*[namespace::amazon] |
查找id=1的所有message节点下的所有命名空间为amazon的节点。 |
//namespace::* |
文档中的所有的命名空间节点。(包括默认命名空间xmlns:xml) |
//message[@id=0]//books/*[local-name()='book'] |
选择books下的所有的book节点,注意:由于book节点定义了命名空间<amazone:book>.若写成//message[@id=0]//books/book则查找不出任何节点。 |
//message[@id=0]//books/*[local-name()='book' and namespace-uri()='http://www.amazon. |
选择books下的所有的book节点,(节点名和命名空间都匹配) |
com/books/schema'] |
|
//message[@id=0]//books/*[local-name()='book'][year>2006] |
选择year节点值>2006的book节点 |
//message[@id=0]//books/*[local-name()='book'][1]/year>2006 |
指示第一个book节点的year节点值是否大于2006.返回xs:boolean: true |