如何使用XPATH将样式属性(margin-left)设置为正值

时间:2014-02-25 10:11:01

标签: xpath

我有以下html

<ul id="ref_1876" data-typeid="n">
   <li style="margin-left: -18px">/li>
   <li style="margin-left: -10px"></li>
   <li style="margin-left: 16px"></li>
   <li style="margin-left: 17px"></li>
   <li style="margin-left: 18px"></li>
   <li style="margin-left: 14px"></li>
   <li style="margin-left: 14px"></li>
   <li style="margin-left: 14px"></li>
   <li style="margin-left: 14px"></li>
</ul>

我希望得到保证金左边的所有“li”与XPATH一致。

在这个阶段,我有以下代码,其中包含所有“li”

('//ul[contains(@data-typeid, "n")]/li')

2 个答案:

答案 0 :(得分:2)

如果您使用的是Xpath 2.0,则可以将 matches 函数与正则表达式一起使用,例如:

... li[matches(@style, "margin\-left\: [0-9]+px")]

使用Xpath 1.0时没有matches,但也许您可以使用:

... li[contains(@style, "margin-left:") and not(contains(@style, "margin-left: -"))]

答案 1 :(得分:1)

希望有人有更好的答案。以下XPath完成了这项工作,但它希望属性margin-left:中始终存在pxstyle

//ul[contains(@data-typeid, "n")]/li[number(substring-before(substring-after(@style, 'margin-left:'), 'px')) > 0]