您需要建议我想使用xslt
删除特定的NameSpace输入如下: -
<GNRequest
xmlns="http://xmlns.tom.be/cms">
<Input>
<DocumentInputs>
<DocumentInput>
<Language>DE</Language>
<TemplateInput>
<MPC>
<InteractionType xmlns="asdfasd">MobileProductOptionActivation</InteractionType>
<SMdn>123456</SMdn>
</MPC>
</TemplateInput>
</DocumentInput>
</DocumentInputs>
</Input>
</GNRequest>
应用XSLT输出后变为:
<?xml version="1.0" encoding="UTF-8"?><tns:Input xmlns:tns="http://xmlns.tom.be/csm/v001" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pc="http://xmlns.oracle.com/pcbpel/" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
<tns:DocumentInputs>
<tns:DocumentInput>
<tns:Language>DE</tns:Language>
<tns:TemplateInput>
<MPC xmlns="http://xmlns.tom.be/cms">
<InteractionType
xmlns="asdfasd">MobileProductOptionActivation</InteractionType>
<SMdn>123456</SMdn>
</MPC>
</tns:TemplateInput>
</tns:DocumentInput>
</tns:DocumentInputs>
</tns:Input>
所以extranameSpace添加了xmlns =“http://xmlns.tom.be/cms”
XSLT:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:tns="http://xmlns.tom.be/csm/v001"
xmlns:ns0="http://xmlns.tom.be/cms"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="/">
<tns:Input>
<tns:DocumentInputs>
<xsl:for-each
select="/ns0:GNRequest/ns0:Input/ns0:DocumentInputs/ns0:DocumentInput">
<tns:DocumentInput>
<tns:Language>
<xsl:value-of select="ns0:Language"/>
</tns:Language>
<tns:TemplateInput>
<xsl:apply-templates select="(ns0:TemplateInput/*)"/></tns:TemplateInput>
</tns:DocumentInput>
</xsl:for-each>
</tns:DocumentInputs>
</tns:Input>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy >
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
只需添加另一条规则以匹配您想要的元素,并创建一个具有相同本地名称但没有命名空间的新元素:
<xsl:template match="ns0:*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<!-- the above goes before ... -->
<xsl:template match="@*|node()">
<xsl:copy >
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
请注意,一般情况下删除命名空间并不是一个好主意,因为您丢失了信息。