2017-03-23 1 views
0

nous voulons utiliser un médiateur xslt pour transformer un xml dans d'autres. nous avons ce message de savon.WSO2 médiateur xslt avec namespaces

<?xml version = "1.0" encoding="ISO-8859-1"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.es"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <ws:reception> 
     <ws:xml> 
      <message>Data messsage to send</message> 
     </ws:xml> 
     </ws:reception> 
    </soapenv:Body> 
</soapenv:Envelope> 

Et nous voulons que ce message résulte.

<?xml version = "1.0" encoding="ISO-8859-1"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.es"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <ws:reception> 
     <ws:xml> 
      <![CDATA[<message>Data messsage to send]]></message> 
     </ws:xml> 
     </ws:reception> 
    </soapenv:Body> 
</soapenv:Envelope> 

nous utilisons ce modèle xslt

<?xml version = "1.0" encoding = "ISO-8859-1"?> 
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match = "//ws:xml"> 
    <xsl:copy> 
     <xsl:text disable-output-escaping="yes"> &lt;![CDATA[</xsl:text> 
      <xsl:copy-of select="*"/> 
     <xsl:text disable-output-escaping="yes"> ]]&gt;</xsl:text> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

Mais cela ne fonctionne pas.

quelqu'un peut-il nous aider ??

Merci d'avance.

Répondre

0

Vos deux fichiers sont identiques. Mais si je ne me trompe pas en pensant que vous voulez changer

<message>Data messsage to send</message> 

dans

<message><![CDATA[Data messsage to send]]></message> 

si alors essayez le ci-dessous:

(code a été modifié pour refléter la question mise à jour)

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="message"> 
    <xsl:text disable-output-escaping="yes"> &lt;![CDATA[</xsl:text> 
    <message> 
     <xsl:value-of select="//message"/> 
    </message> 
    <xsl:text disable-output-escaping="yes"> ]]&gt;</xsl:text>  
</xsl:template> 

Soyez averti cependant, Michael Kay criera à vous pour utiliser disable-output-escaping

+0

Je suis désolé. Nous voulons Menssage données]]> – Hiro

+0

ok merci. Cependant, si l'on inclut une balise XML dans balise XML message, ce modèle supprimer l'étiquette et il ne montre que le contenu de la balise, comme données]]> .., il devrait montrer .... . data]]> .... – Hiro

+0

ok, si j'utilise xsl: copy-of au lieu de xsl: value-of, nous avons ce que nous voulons. Merci beaucoup pour votre réponse rapide et votre attention. – Hiro