2009-08-26 5 views
0

Ich verarbeite eine Soap-Antwortdatei und unsere Anforderung besteht darin, bestimmte Daten, die während der Anfrage erfasst wurden, der Antwort hinzuzufügen. Ich habe diese XML-Antwort hier und wie ein Hinzufügen bestimmter Daten in den Header-Teil davon mithilfe einer XSLT-Datei. Bitte um Rat.Einfügen von Tags in Soap-Header mit XSLT

Actual reponse

<soap:Envelope xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
     <wsse:Security> 
     <wsu:Timestamp wsu:Id="Timestamp-7cd6d5e5"> 
      <wsu:Created>2009-08-26</wsu:Created> 
     </wsu:Timestamp> 
     </wsse:Security> 
    </soap:Header> 
    <soap:Body> 
     <GetProxy> 
     <ProxiesList/> 
     </GetProxy> 
    </soap:Body> 
</soap:Envelope> 

eine Xslt benötigen diese

<soap:Envelope xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
     <wsse:Security> 
     <wsu:Timestamp wsu:Id="Timestamp-7cd6d5e5"> 
      <wsu:Created>2009-08-26</wsu:Created> 
     </wsu:Timestamp> 
     </wsse:Security> 
     <ut:reqCode xmlns:ut="temp.org"> 
     <ut:reqInfo>information from request</ut:reqInfo> 
     </ut:reqCode> 
    </soap:Header> 
    <soap:Body> 
     <GetProxy> 
     <ProxiesList/> 
     </GetProxy> 
    </soap:Body> 
</soap:Envelope> 

Ich schätze Sie

help.Thanks

zum Einfügen

Antwort

3

Ein nützliches Muster Dinge in XML zu konvertieren ist die identity transform zu verwenden Kopieren Sie alles und überschreiben Sie es einfach für die Tags, die Sie ändern möchten:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
       version="1.0"> 
    <xsl:output method="xml" 
       indent="yes"/> 

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

    <!-- special handling for soap:Header --> 
    <xsl:template match="soap:Header"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 

     <!-- insert the following inside the soap:Header tag --> 
     <ut:reqCode xmlns:ut="temp.org"> 
     <ut:reqInfo>information from request</ut:reqInfo> 
     </ut:reqCode> 

    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

Dies kopiert im Grunde nur alles, aber für soap:Header nach dem Kopieren seines Inhalts, fügt einige zusätzliche Inhalte hinzu.

Verwandte Themen