XPATH中position()的用法
-
在OpenERP中,继承视图可以用<field name="xxoo">这样的标签来定位修改点,但对于有些没有名字的元素比如page,就只能用更强大的xpath了。
但使用xpath有个问题,XPATH 是可以返回一个LIST 的,不过OpenERP 默认只取第一个,如果改其他的元素怎么办?对于最后一个元素,可以用last()函数,还可以用last() - n来定位倒数第几个元素,当然这是有点儿危险的,可能会越界。步科大神分享还可以用position()函数,这样就可以正向定位了。
比如
<header>
<button name="action_quotation_send" string="Send by Email" type="object" states="draft" class="oe_highlight" groups="base.group_user"/>
<button name="action_quotation_send" string="Send by Email" type="object" states="sent" groups="base.group_user"/>
这两个按钮就比较坑爹,定位第一个可以有三种办法:
<xpath expr="//button[@name='action_quotation_send']" position="after">
<xpath expr="//button[@name='action_quotation_send'][position()=1]" position="after">
<xpath expr="//button[@name='action_quotation_send'][last()-1]" position="after"> -
赞...............
参考资料:https://developer.mozilla.org/en-US/docs/XPath/Functions/position -
顶!
之前为了隐藏按钮用过的笨办法拿出来贻笑大方一下 ;D :<br /> <xpath expr="//button[@name='action_quotation_send' and @states='draft']" position="replace"></xpath><br /> <xpath expr="//button[@name='action_quotation_send' and @states='sent']" position="replace"></xpath><br />