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

この質問はすでに答えられていると思います。2 つのテンプレートを使用します。

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

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

4回目の編集。

入力サンプル:

<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 に答える