PART A
我想通过其属性值选择一个HTML元素。我希望能够匹配 all 个属性。
例如,元素<a>
具有以下属性:
'href' => "https://twitter.com/JSTOR"
'target' => "_blank"
'class' => "icon-twitter twitter-styling icon-large"
'aria-label' => "Twitter - This link opens in a new window"
是这样的: // a [@href ='https://twitter.com/JSTOR'AND @target ='_ blank'AND @ class ='icon-twitter twitter-style icon-large'...
所以如果我有n个属性,我需要n-1个“与”吗?
PART B
还值得注意的是“ class”中的多个值。我可以简单地使用@ class ='classA classB classC'还是应该@ class ='classA'AND @ class ='classB'AND @ class ='classC'?
PART C
最后,对于“类”中的多个值,顺序重要吗?如果标记中列出了“ classA classB”,而我们使用了xpath // a [@ class ='classB classA',它仍会匹配吗?
**请注意,我需要XPath 1.0的答案
答案 0 :(得分:1)
所以如果我有n个属性,我需要n-1个“与”吗?
是的
我可以简单地拥有
@class='classA classB classC'
可以,但是需要完全匹配,包括空格和顺序
最后,对于“类”中的多个值,顺序重要吗?
是否进行相等匹配并不重要。有多种解决方法,请参见this answer
答案 1 :(得分:1)
此XPath阐明了由三部分组成的问题的所有概念:
//a[contains(concat(' ',@class,' '), ' classA ')]
[contains(concat(' ',@class,' '), ' classB ')]
[contains(concat(' ',@class,' '), ' classC ')]
[@href='https://twitter.com/JSTOR']
[@target='_blank']
注意:
@class
测试阻止classA
与classAnt
匹配。and
将条件加入单个谓词而不是复合谓词中。