我有一个这样的XML。
<a>
<b>
<c>
<e>
</e>
</c>
<d>
</d>
</b>
<b>
<c>
<e>
<e>
</c>
<d>
</d>
</b>
</a>
我需要复制整个文档并删除所有<c>
元素及其子元素。之后,我想将新文档存储到变量中。
以下是我想要在转换后拥有的 XML:
<a>
<b>
<d>
</d>
</b>
<b>
<d>
</d>
</b>
</a>
以及我目前拥有的:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="c"/>
我看到的两件事是错误的:
- 您的输入缺少第二个
<e>
元素的结束标记 - 您的 xslt 脚本缺少标头
因此,将您的输入更改为格式良好的内容,如下所示:
<a>
<b>
<c>
<e>
</e>
</c>
<d>
</d>
</b>
<b>
<c>
<e>
</e>
</c>
<d>
</d>
</b>
</a>
在样式表周围添加标题和 xsl:样式表标签,如下所示:
<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="c"/>
</xsl:stylesheet>
整个事情都有效,产生这样的输出:
<?xml version="1.0" encoding="UTF-8"?>
<a>
<b>
<d>
</d>
</b>
<b>
<d>
</d>
</b>
</a>