XPath
出处
http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
http://www.w3school.com.cn/xpath/xpath_syntax.asp
从根开始定位
XPath语法:
/N1/N2/.../Nm
TPL语法:
Doc[!N1/N2/.../Nm] // 取最后一个满足条件的元素 Doc.select(!N1/N2/.../Nm) // 取所有满足条件的元素
匹配样例:
<N1> <N2> ... <Nm> // 要选择该元素 ... </Nm> </N2> </N1>
任意位置匹配
XPath语法:
//M1/M2/.../Mn
TPL语法:
Doc[!!N1/N2/.../Nm] // 取最后一个满足条件的元素 Doc.select(!!N1/N2/.../Nm) // 取所有满足条件的元素
匹配样例:
<Doc> ... <M1> <M2> ... <Mn> // 要选择该元素 ... </Mn> </M2> </M1> ... </Doc>
通配符
XPath语法:
/N1/N2/.../Nm/* // 注意*可出现在任何位置,如下例。 /*/*/*/M // 所有有3个祖先的M元素 //* // 选择所有元素
TPL语法:
Doc.select(!N1/N2/.../Nm/any())
Doc.select(!any()/any()/any()/M)
Doc.select(!!any())
选择第N个元素
XPath语法:
/N1/N2/.../Nm[n] // select(/N1/N2/.../Nm)得到了很多个Nm结点,这是取第n个 /*/*/*/M[last()] // 取最后一个M结点
TPL语法:
todo
选择元素属性
/N1/N2/.../Nm[@prop] // 选择有prop属性的Nm结点 /N1/N2/.../Nm[@prop="value"] // 选择有prop属性且值为value的Nm结点 /N1/N2/.../Nm[@*] // 选择有属性(不能没有)的Nm结点 /N1/N2/.../Nm[not(@prop)] // 选择没有prop属性的Nm结点 /N1/N2/.../Nm[not(@*)] // 选择没有属性的Nm结点
TPL中没有属性。
count:元素个数
/N1/N2/.../*[count(Nm)=4] // 选择有子元素Nm且Nm个数为4的结点(不是选Nm,是选择其父亲)
小结:
对XPath而言,operator[]有两个含义:一个是下标n(或last()),一个是bool表达式(筛选条件)。但也可以把下标n(或last())看作是bool表达式(筛选条件)。
或运算(operator |)
由于XPath本质上是查询(Query)语言,故此支持或运算:
/N1/N2/.../Nm | //M1/M2/.../Mn
page_revision: 2, last_edited: 1212138491|%e %b %Y, %H:%M %Z (%O ago)





