我有XML文件,我想按原样复制它,但我想过滤一些不需要的元素和属性,例如以下是原始文件:
<root>
<e1 att="test1" att2="test2"> Value</e1>
<e2 att="test1" att2="test2"> Value 2 <inner class='i'>inner</inner></e2>
<e3 att="test1" att2="test2"> Value 3</e3>
</root>
Run Code Online (Sandbox Code Playgroud)
过滤后(e3元素和att2属性已被删除):
<root>
<e1 att="test1" > Value</e1>
<e2 att="test1" > Value 2 <inner class='i'>inner</inner></e2>
</root>
Run Code Online (Sandbox Code Playgroud)
笔记:
谢谢
我知道你更喜欢使用for-each,但为什么不使用身份转换,然后用你不想保留的内容覆盖该模板?
这个样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="e3|@att2"/>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
生产:
<root>
<e1 att="test1"> Value</e1>
<e2 att="test1"> Value 2 <inner class="i">inner</inner>
</e2>
</root>
Run Code Online (Sandbox Code Playgroud)