我想从我的XML文件中删除所有标签,除了有限数量的标签,我知道。我怎么能用XSLT做到这一点。
我知道我可以使用以下方法从我的xml中删除div标签,但我想否定,比如剥离所有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>
答案 0 :(得分:0)
我相信这个问题已经answered了。 使用两个模板。
<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之外,这将删除所有标记。并且记录所有标签内容。我刚尝试过。