我有以下xml文件,它来自我的供应商。
<?xml version="1.0" encoding="UTF-8"?>
<nm:MT_employee xmlns:nm="http://firstscenario.com"xmlns:tl="http://secondscenario.com">
<EMployeeDetails>
<Name>Janardhan</Name>
<id>1234</id>
<Address>India</Address>
</EMployeeDetails>
<tl:Extension>
<tl:Number>5678</tl:Number>
<tl:Salary>2345678</tl:Salary>
</tl:Extension>
</nm:MT_employee>
在上面的xml中,我想忽略整个 tl:Extension 节点。最终输出应该如下
<?xml version="1.0" encoding="UTF-8"?>
<nm:MT_employee xmlns:nm="http://firstscenario.com"xmlns:tl="http://secondscenario.com">
<EMployeeDetails>
<Name>Janardhan</Name>
<id>1234</id>
<Address>India</Address>
</EMployeeDetails>
</nm:MT_employee>
我尝试使用不同的XSLT代码,但它不起作用。您能否建议我如何实现这一目标?
此致 Janardhan
答案 0 :(得分:0)
“忽略”源XML中的元素的一般规则 是为这个元素写一个“空”模板,在你的情况下:
<xsl:template match="tl:Extension"/>
由于此模板引用 tl 名称空间,因此必须指定它 在 xsl:transform 标记中。
当然,要复制其余的源内容,请复制您的脚本 必须包含身份模板。
下面是一个示例脚本:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tl="http://secondscenario.com" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="tl:Extension"/>
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
</xsl:transform>