1

我想从我的 XML 文件中删除所有标签,除了有限数量的标签,我知道。我怎么能用 XSLT 做到这一点。

我知道我可以使用以下内容从我的 xml 中删除 div 标签,但我想否定,例如 Strip all BUT Div。

  <xsl:template match = "div">
        <xsl:apply-templates select="@*|node()"/>
  </xsl:template>

XSLT 文件的更多片段:

  <xsl:template match="div"> <!-- switch the element name -->
    <xsl:element name="newdiv">
      <xsl:copy-of select="@*" />
      <xsl:apply-templates />
    </xsl:element>
  </xsl:template>

  <xsl:template match="div"/>
  <xsl:template match="*"> 
     <xsl:copy> 
    <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
  </xsl:template>       
4

1 回答 1

0

我相信这个问题已经回答了。使用两个模板。

<xsl:template match="*">
   <!-- Everything -->
</xsl:template>

<xsl:template match="something | somethingelse">
   <!-- what you want ignored -->
</xsl:template>

第四次编辑。

输入样本:

<body>
    <table>
        <tr>
            <td>
            </td>
        </tr>
    <div>content</div>
    </table>
    <div>content again</div>
</body>

XSLT 转换来做你需要的:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="div">
       <xsl:element name="div">
         <xsl:copy-of select="@*" />
         <xsl:apply-templates />
       </xsl:element>
    </xsl:template>


    <xsl:template match="*">
      <xsl:apply-templates select="@*|node()"/>
    </xsl:template>
</xsl:stylesheet>

这将删除除 DIV 之外的所有标签。并保留所有标签内容。我刚试过。

于 2012-08-08T16:05:59.600 回答