Potrzebuję następujący dokument SOAPowy:
<?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>
Przerobić na :
<?xml version="1.0" encoding="UTF-8"?>
<msg>
<parameters>
<parameter>
<key>content</key>
<value><![CDATA[<some>duzo danych</some>]]></value>
</parameter>
</parameters>
</msg>
Próbowałem tak jak poniżej:
<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>
ale dokleja mi jak widać poniżej ciągle namespace i prefix do elementu/noda roota.
<?xml version="1.0" encoding="UTF-8"?>
<msg xmlns:a1="http://costam" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<parameters>
<parameter>
<key>content</key>
<value>
<![CDATA[<some>duzo danych</some>]]>
</value>
</parameter>
</parameters>
</msg>
co robię źle ?
Będę wdzięczny za pomoc.
Pozdrawiam
ok pomogli już na innym forum .
Należy dodać taką opcję
exclude-result-prefixes :
<xsl:stylesheet xmlns..... exclude-result-prefixes="S a1">
Ten post edytował damianooo 14.03.2018, 10:36:57