代码之家  ›  专栏  ›  技术社区  ›  peterh Eli

如何消除标签的所有出现?

  •  0
  • peterh Eli  · 技术社区  · 4 年前

    我想用xslt从输出中删除一个标签, 通过保留所有的孩子 在下面的例子中,我试图消除以下所有情况 <b> .

    输入(带 <b> 标签):

    <a>
      text
      <b>
        <child/>
        text
      </b>
    </a>
    

    在消除 <b> s

    <a>
      text
      <child/>
      text
    </a>
    

    因此,我们的目标是让孩子们 <b> ,通过在标签层次结构中将它们提升一级。

    我认为一些复杂的模板可以做到这一点,但有简单的解决方案吗?我还使用xslt-1。

    1 回复  |  直到 4 年前
        1
  •  2
  •   Sebastien    4 年前

    你可以简单地这样做:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        version="1.0">
    
      <xsl:output method="xml" indent="yes"/>
    
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
      </xsl:template>
      
      <xsl:template match="b">
          <xsl:apply-templates/>
      </xsl:template>
      
    </xsl:stylesheet>
    

    看到它在这里工作: https://xsltfiddle.liberty-development.net/6q1SDk3