4. string-length 函数返回字符串的字符数, 你应该用 < 替代 < , 用 > 代替 >
选择名字长度为3 的元素: //*[string-length(name()) = 3]
<AAA>
< Q />
< SSSS />
< BB />
<CCC />
< DDDDDDDD />
< EEEE />
</AAA>
多个路径可以用分隔符 | 合并在一起
选择所有的CCC 和BBB 元素: //CCC | //BBB
< AAA >
<BBB />
<CCC />
< DDD >
<CCC />
</ DDD >
< EEE />
</ AAA >
选择所有的BBB 元素和所有是AAA 的子元素的EEE 元素: /AAA/EEE | //BBB
< AAA >
<BBB />
< CCC />
< DDD >
< CCC />
</ DDD >
<EEE />
</ AAA >
5. child 轴(axis) 包含上下文节点的子元素, 作为默认的轴, 可以忽略不写.
/AAA 等价于 /child::AAA
<AAA>
< BBB />
< CCC />
</AAA>
/child::AAA/child::BBB 等价于 /AAA/BBB , 当然二者都可以被合并 :/child::AAA/BBB
< AAA >
<BBB />
< CCC />
</ AAA >
6. 星号 * 表示选择所有由星号之前的路径所定位的元素
选择所有路径依附于 /AAA/CCC/DDD 的元素 :/AAA/CCC/DDD/*
< AAA >
< XXX >
< DDD >
< BBB />
< BBB />
< EEE />
< FFF />
</ DDD >
</ XXX >
< CCC >
< DDD >
<BBB />
<BBB />
<EEE />
<FFF />
</ DDD >
</ CCC >
< CCC >
< BBB >
< BBB >
< BBB />
</ BBB >
</ BBB >
</ CCC >
</ AAA >
7. 方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last() 函数则表示选择集中的最后一个元素.
选择AAA 的第一个BBB 子元素: /AAA/BBB[1]
< AAA >
<BBB />
< BBB />
< BBB />
< BBB />
</ AAA >
选择AAA 的最后一个BBB 子元素: /AAA/BBB[last()]
< AAA >
< BBB />
< BBB />
< BBB />
<BBB />
</ AAA >
8. 属性通过前缀 @ 来指定
9. descendant ( 后代) 轴包含上下文节点的后代, 一个后代是指子节点或者子节点的子节点等等, 因此 descendant 轴不会包含属性和命名空间节点.
选择 /AAA/BBB 的所有后代元素 : /AAA/BBB/descendant::*
< AAA >
< BBB >
<DDD>
<CCC>
<DDD />
<EEE />
</CCC>
</DDD>
</ BBB >
< CCC >
< DDD >
< EEE >
< DDD >
< FFF />
</ DDD >
</ EEE >
</ DDD >
</ CCC >
</ AAA >
10. 如果有父节点的话,parent 轴(axis) 包含上下文节点的父节点
选择DDD 元素的所有父节点 //DDD/parent::*
< AAA >
<BBB>
< DDD >
<CCC>
< DDD />
< EEE />
</CCC>
</ DDD >
</BBB>
<CCC>
< DDD >
<EEE>
< DDD >
< FFF />
</ DDD >
</EEE>
</ DDD >
</CCC>
</ AAA >