0
有这个XML,我需要删除所有的前缀,我之前做过,但有一个特定的NS2前缀,我无法删除。XSL - 如何删除此特定命名空间前缀?
检查:
输入XML
<NS1:Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/">
<NS1:Header>
<NS2:responseHeader xmlns:NS2="http://test.com">
<systemId>SI</systemId>
<messageId>000001</messageId>
<timestamp>2015-01-16T10:10:09.872983</timestamp>
<responseStatus>
<statusCode>Success</statusCode>
</responseStatus>
</NS2:responseHeader>
</NS1:Header>
<NS1:Body>
<NS2:modificarSolicitudDeCreditoResponse xmlns:NS2="http://test2.com/21"/>
</NS1:Body>
</NS1:Envelope>
我的XSLT:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="NS2:modificarSolicitudDeCreditoResponse">
<modificarSolicitudDeCreditoResponse>
<xsl:apply-templates select="@*|node()"/>
</modificarSolicitudDeCreditoResponse>
</xsl:template>
<xsl:template match="NS1:Header">
<Header>
<xsl:apply-templates select="@*|node()"/>
</Header>
</xsl:template>
<xsl:template match="NS2:responseHeader">
<responseHeader>
<xsl:apply-templates select="@*|node()"/>
</responseHeader>
</xsl:template>
<xsl:template match="NS1:Body">
<Body>
<xsl:apply-templates select="@*|node()"/>
</Body>
</xsl:template>
<xsl:template match="/*">
<Envelope>
<xsl:apply-templates select="node()" />
</Envelope>
</xsl:template>
</xsl:stylesheet>
这是我的输出:
<?xml version='1.0' ?>
<Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/"
<Header>
<responseHeader>
<systemId>AW0856</systemId>
<messageId>0000012</messageId>
<timestamp>2015-01-16T10:10:09.872983</timestamp>
<responseStatus>
<statusCode>Success</statusCode>
</responseStatus>
</responseHeader>
</Header>
<Body>
<NS2:modificarSolicitudDeCreditoResponse xmlns:NS2="http://test2.com/21">
</Body>
</Envelope>
林有后取出NS2问题身体t AG,有谁知道我怎么能做到这一点, 感谢
请发布您期望得到的确切输出。 –