xslt删除具有某个子节点属性的父级

时间:2014-10-09 12:50:03

标签: xml xslt xpath

我有以下xml代码

<root_el>
 <cell>
  <button id="btn_phone_mvg">
   <text>…</text>
  </button>
 </cell>
 <cell>
  <button id="btn_email_cmb">
   <text>…</text>
  </button>
 </cell>
 <cell>
  <button id="btn_address_mvg">
   <text>…</text>
  </button>
 </cell>
</root_el>

我需要将其转换为另一个xml,其中包含 id _mvg 结尾将被删除

到目前为止,我已经发现要删除具有某些id属性值的子按钮的所有单元格将采用此

<xsl:template match="cell[button/@id='value']"/>

并获取id属性的最后4个字符将采用下一个XPath表达式

substring(@id,string-length(@id)-4)

但我不知道如何将它们放在一起并获得所需的输出

1 个答案:

答案 0 :(得分:4)

尝试这种方式将<cell>与ID为<button>的孩子_mvg相匹配:

<xsl:template match="cell[button[substring(@id,string-length(@id)-3)='_mvg']]"/>

如果可用,您可以使用ends-with()函数按字符串结尾字面匹配:

<xsl:template match="cell[button[ends-with(@id, '_mvg')]]"/>