Odoo 15 QWEB报表中替换表格CSS类的XPath写法咨询
Odoo 15 QWEB报表替换CSS类的XPath方案
要将目标表格的table-sm类替换为table-condensed,可以使用以下两种精准的XPath实现方式,确保保留其他必要CSS类:
方式1:直接替换完整class属性
适用于明确知道目标元素所有CSS类的场景,直接重新设置class属性值:
<xpath expr="//table[contains(@class, 'table-sm') and contains(@class, 'o_main_table')]" position="attributes"> <attribute name="class">table table-condensed o_main_table</attribute> </xpath>
- 定位逻辑:通过
contains(@class, 'table-sm')和contains(@class, 'o_main_table')精准匹配目标表格,避免误修改其他表格元素。 - 作用:直接覆盖class属性为指定值,确保
table-sm被替换为table-condensed,同时保留table和o_main_table类。
方式2:使用XPath字符串替换函数
如果目标元素的CSS类可能存在动态变化,这种方式更灵活,仅替换指定类名:
<xpath expr="//table[contains(@class, 'table-sm') and contains(@class, 'o_main_table')]/@class" position="replace"> <value><![CDATA[replace(., 'table-sm', 'table-condensed')]]></value> </xpath>
- 定位逻辑:精准匹配目标表格后,定位到其class属性。
- 作用:利用XPath的
replace函数,将class属性值中的table-sm字符串替换为table-condensed,自动保留其他所有CSS类。
注意事项
- 需在报表的继承视图中正确引用原报表的视图ID,否则XPath无法定位到目标元素。
- 若页面存在多个含
table-sm的表格,需进一步优化XPath定位条件(比如结合父元素或其他属性),确保只修改目标表格。
内容的提问来源于stack exchange,提问作者Gustavo Salgado
相关产品推荐
相关产品推荐

