我需要使用单个模板删除所有<h#>系列标签

时间:2017-08-07 10:59:40

标签: xml xslt xslt-2.0

是否可以使用XSL删除h#系列号

使用as:

输入XML
  <table>
    <tbody>
      <tr>
        <td>
          <h2>
            <img src="https://admin.com" />
          </h2>
        </td>
        <td>
          <h3>
            <img src="https://admin.com" />
          </h3>
        </td>
        <td>
          <h4>
            <img src="https://admin.com" />
          </h4>
        </td>
      </tr>
    </tbody>
  </table>

XSL我用作:

<xsl:template match="table/tbody/tr/td/h2[img]">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="table/tbody/tr/td/h3[img]">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="table/tbody/tr/td/h4[img]">
  <xsl:apply-templates/>
</xsl:template>

就像在所有输入中一样,h#可以在表格中使用。是否可以编写单个模板以从表中删除所有h1 h2 h3 ....... h系列?

1 个答案:

答案 0 :(得分:1)

您可以在示例模板中使用多个pattern,例如<xsl:template match="table/tbody/tr/td/h2[img] | table/tbody/tr/td/h3[img] | table/tbody/tr/td/h4[img]"><xsl:apply-templates/></xsl:template>

我不建议使用正则表达式,如果你想缩短模式然后做

<xsl:template match="table/tbody/tr/td/*[(self::h1 | self::h2 | self::h3 | self::h4 | self::h5 | self::h6) and img]">
  <xsl:apply-templates/>
</xsl:template>