我需要将Soap Message转换为XML消息。 我有一个问题,得到正确的xml消息。
输入消息是:
<?xml version="1.0" encoding="utf-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<a1:mojkomunikat xmlns:a1="http://costam">
<a1:message>
<a1:msgHeader>
</a1:msgHeader>
<a1:msgData>
<a1:some>duzo danych</a1:some>
</a1:msgData>
</a1:message>
</a1:mojkomunikat>
</S:Body>
</S:Envelope>
输出消息为:
<?xml version="1.0" encoding="UTF-8"?>
<msg>
<parameters>
<parameter>
<key>content</key>
<value><![CDATA[<some>duzo danych</some>]]></value>
</parameter>
</parameters>
</msg>
我尝试使用这个变压器但不起作用。 我不幸的是,根元素仍然是命名空间:(
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:a1="http://costam"
version="1.0">
<xsl:template match="/">
<msg>
<parameters>
<parameter>
<key>content</key>
<value><xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:apply-templates select="//a1:msgData/*"/>
<xsl:text disable-output-escaping="yes">]]></xsl:text></value>
</parameter>
</parameters>
</msg>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()|@*" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
但不起作用
我做错了什么? 感谢
答案 0 :(得分:0)
在exclude-result-prefixes
中添加属性<xsl:stylesheet>
。这可确保命名空间不会添加到输出中。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:a1="http://costam" version="1.0" exclude-result-prefixes="S a1">