2016-09-20 25 views
-1

SOAPヘッダータグが存在しない受信SOAPメッセージがあります。その中にSOAPヘッダーを追加する必要があります。私はこれを行うためにこのXSLTを使用していますが、SOAPヘッダーは追加されていません。 XSLT:XSLTを使用してSOAPエンベロープにSOAPヘッダーを追加

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:dp="http://www.datapower.com/extensions" 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
extension-element-prefixes="dp" 
exclude-result-prefixes="dp" > 
    <xsl:variable name="uuid" select="dp:variable('var://context/txn/uuid')" /> 
<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="soapenv:Header"> 
    <soapenv:Header> 
     <UUID><xsl:value-of select="$uuid"/></UUID> 
    </soapenv:Header> 
</xsl:template> 
</xsl:stylesheet> 

incomigのSOAPのmesaggeは、ヘッダータグを持つことができるか、それがヘッダータグを持っていない可能性があります

ヘッダータグなし入力SOAPメッセージ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <hmhs-medical-acknowledgement id="4080186649" result="FAIL""/> 
    </soapenv:Body> 
</soapenv:Envelope> 

ヘッダータグで入力SOAPメッセージ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header/>  
     <soapenv:Body> 
      <hmhs-medical-acknowledgement id="4080186649" result="FAIL""/> 
     </soapenv:Body> 
</soapenv:Envelope> 

必要な出力SOAPメッセージ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header> 
<UUID>71A4B2FA029D412787B06E07685ED101</UUID> 
</soapenv:Header> 
    <soapenv:Body> 
     <hmhs-medical-acknowledgement id="4080186649" result="FAIL""/> 
    </soapenv:Body> 
</soapenv:Envelope> 

SOAPヘッダーを追加する方法をお手伝いできますか?あなたがやりたい

+0

XML入力と期待される出力の例を投稿してください。 - **ヒント:**入力にSOAPヘッダーがない場合、2番目のテンプレートは決して実行されません。 –

+0

こんにちはマイケル、 入力SOAPメッセージ: 出力SOAPメッセージ: 71A4B2FA029D412787B06E07685ED101 ヘッダー user5458829

+0

コメントにコードを投稿しないでください。代わりに質問を編集してください。 –

答えて

0

AFAICT、:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:dp="http://www.datapower.com/extensions" 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
extension-element-prefixes="dp"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:variable name="uuid" select="dp:variable('var://context/txn/uuid')" /> 

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

<xsl:template match="/soapenv:Envelope"> 
    <xsl:copy> 
     <soapenv:Header> 
      <UUID><xsl:value-of select="$uuid"/></UUID> 
     </soapenv:Header> 
     <xsl:apply-templates/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="soapenv:Header"/> 

</xsl:stylesheet> 
+0

ありがとうマイケル、このソリューションはうまくいきます。私は ""のような空のヘッダータグを取得しているのと同じような別の問題を抱えています。したがって、このシナリオではこれは機能しません。 ""タグがなかった場合、このコードは機能しています。 ":tagが存在するかどうかを判断するにはどうすればよいでしょうか?それに基づいて、fortemplate match ="/soapenv:Envelope "または" template match = "/ soapenv:Header"これをどのように書くことができるかを助けてください。 – user5458829

+0

あなたの質問を編集して、空のヘッダーを含む入力の例を表示してください。 –

+0

こんにちはMichael、私は2つの可能な着信SOAPメッセージを追加しました.Headerタグ付きであり、他のものはHEADERタグなしのSOAPメッセージです。消費者がHEADERタグを送信していて、いつか来ていません。希望の結果を得る方法を知っています。 – user5458829

関連する問題