我有xml:
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<med:PutEmployee xmlns:med="https://services">
<med:employees>
<med:Employee>
<med:Name xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:nil="true">Мария</med:Name>
<med:SNILS>111-111-111-11</med:SNILS>
</med:Employee>
</med:employees>
</med:PutEmployee>
</soapenv:Body>
我使用xslt:
删除了参数“@i:nill”<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="i">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*[name()!='i:nil']" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
运行xslt,我得到了xml:
<?xml version="1.0"?>
<?xml version="1.0"?>
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<med:PutEmployee xmlns:med="https://services">
<med:employees>
<med:Employee>
<med:Name xmlns:i="http://www.w3.org/2001/XMLSchema-instance">Мария</med:Name>
<med:SNILS>111-111-111-11</med:SNILS>
</med:Employee>
</med:employees>
</med:PutEmploy>
离开xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
如何删除它?
我尝试添加exclude-result-prefixes = "i"
,但没有帮助
答案 0 :(得分:3)
如果您使用的是XSLT 2.0,请使用
<xsl:copy copy-namespaces="no">
答案 1 :(得分:2)
这应该可以解决问题:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="i">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="node() | @*" priority="-2">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="@i:nil" />
<xsl:template match="*">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
在样本输入上运行时,结果为:
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<med:PutEmployee xmlns:med="https://services">
<med:employees>
<med:Employee>
<med:Name>Мария</med:Name>
<med:SNILS>111-111-111-11</med:SNILS>
</med:Employee>
</med:employees>
</med:PutEmployee>
</soapenv:Body>