2013-09-23 75 views
0

IM:如何使用的DataPower SOA</p> <p>我有一個XML標記添加到SOAP XML消息

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Body> 
<data>data</data> 
</s:Body> 
</s:Envelope> 

我想將其更改爲:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Body> 
<ns0:ReceptionRequest xmlns:ns0="ReceptionRequest"> 
<Message> 
<data>data</data> 
</Message> 
</ns0:ReceptionRequest> 
</s:Body> 
</s:Envelope> 

請幫助我XSL

我該如何添加標籤前後的東西

回答

0

您可以使用以下XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="ReceptionRequest" exclude-result-prefixes="soap"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

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

    <xsl:template match="soap:Body"> 
     <xsl:copy> 
      <ns0:ReceptionRequest xmlns:ns0="ReceptionRequest"> 
       <Message> 
        <xsl:apply-templates /> 
       </Message> 
      </ns0:ReceptionRequest> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

<xsl:template match="soap:Body">將使新的元素和複製<data>元素

+0

如果我在數據下有更多標籤,它是否也會複製它們? – alex

+0

@alex:是的,它會複製''元素內的所有元素 –

+0

@alex有答案滿意嗎?如果是這樣,請接受答案 –

0

您可以使用下面的代碼也將複製其價值。

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

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

</xsl:template> 

    <xsl:template match = "*[local-name() = 'Body']"> 

     <xsl:copy> 
     <ns0:ReceptionRequest xmlns:ns0="ReceptionRequest"> 
     <Message> 
      <xsl:copy-of select ="*[local-name() = 'data']"/> 

     </Message> 
    </ns0:ReceptionRequest> 
    </xsl:copy> 
    </xsl:template> 


</xsl:stylesheet>