2009-08-26 4 views
0

Je suis en train de traiter un fichier de réponses de savon et d'ajouter certaines données capturées lors de la requête à la réponse. J'ai cette réponse xml ici et comme ajouter certaines données à la partie en-tête de celui-ci en utilisant un fichier XSLT. Veuillez nous conseillerInsertion de balises dans l'en-tête de savon à l'aide de 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> 

Besoin d'un xslt pour convertir en

<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> 

Je vous remercie help.Thanks

Répondre

3

Un modèle utile pour insérer des choses en XML est d'utiliser le identity transform pour copier tout et juste le remplacer pour les balises que vous voulez changer:

<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> 

Cela copie simplement tout, mais pour soap:Header après avoir copié son contenu, ajoute du contenu supplémentaire.

Questions connexes