Loop through multiple records
hi, have mapping problem tried biztalk mapper unable loop through desired output.
if mode or g or e,then map outbound schema claim elements level after header generation. for each inbound message there multiple claimdetails , in each claimdetails there can max of 3 claims. in each of claims(max 3) if found true first records elements goes claim1 , subsequently till claim2 , claim3 record elements.
input:
<ns0:response xmlns:ns0='http://schemas.response'><ns1:objectresponse xmlns:ns0="http://schemas.objects" xmlns:ns1="http://schemas.claimresponse" recordexist="n" format="ff" id="n" destination="cdd">
<ns1:claimsresponse>
<ns1:batchno>12</ns1:batchno>
<ns1:claimdetails>
<ns1:claims>
<ns1:no>1</ns1:no>
<ns1:member>1</ns1:member>
<ns1:services>
<ns1:mode>e</ns1:mode>
<ns1:state>ma</ns1:state>
<ns1:procedure>d291</ns1:procedure>
</ns1:services>
</ns1:claims>
<ns1:claims>
<ns1:no>2</ns1:no>
<ns1:member>1</ns1:member>
<ns1:services>
<ns1:mode>a</ns1:mode>
<ns1:state>ma</ns1:state>
<ns1:procedure>d291</ns1:procedure>
</ns1:services>
</ns1:claims>
</ns1:claimdetails>
<ns1:claimdetails>
<ns1:no>2</ns1:no>
<ns1:member>6</ns1:member>
<ns1:services>
<ns1:mode>a</ns1:mode>
<ns1:state>ny</ns1:state>
<ns1:procedure>d291</ns1:procedure>
</ns1:services>
</ns1:claimdetails>
<ns1:claimdetails>
<ns1:no>4</ns1:no>
<ns1:member>3</ns1:member>
<ns1:services>
<ns1:mode>g</ns1:mode>
<ns1:state>nh</ns1:state>
<ns1:procedure>d291</ns1:procedure>
</ns1:services>
</ns1:claimdetails>
</ns1:claimsresponse>
</ns1:objectresponse>
</ns0:response>
output:
<ns0:outbound xmlns:ns0="http://schemas.outbound">
<ns0:header>
<ns0:format>ff</ns0:format>
<ns0:count>3</ns0:count>
<ns0:date>20121007</ns0:date>
<ns0:exists>20121007</ns0:exists>
</ns0:header>
<ns0:claimdetails>
<ns0:claim1>
<ns0:no1>1</ns0:no1>
<ns0:mode1>e</ns0:mode1>
<ns0:state1>ma</ns0:state1>
<ns0:procedure1>d291</ns0:procedure1>
</ns0:claim1>
<ns0:claim2>
<ns0:no1>2</ns0:no1>
<ns0:mode2>a</ns0:mode2>
<ns0:state2>ma</ns0:state2>
<ns0:procedure2>d291</ns0:procedure2>
</ns0:claim2>
</ns0:claimdetails>
<ns0:claimdetails>
<ns0:claim1>
<ns0:no1>2</ns0:no1>
<ns0:mode1>a</ns0:mode1>
<ns0:state1>ny</ns0:state1>
<ns0:procedure1>d291</ns0:procedure1>
</ns0:claim1>
</ns0:claimdetails>
<ns0:claimdetails>
<ns0:claim1>
<ns0:no1>4</ns0:no1>
<ns0:mode1>g</ns0:mode1>
<ns0:state1>nh</ns0:state1>
<ns0:procedure1>d291</ns0:procedure1>
</ns0:claim1>
</ns0:claimdetails>
</ns0:outbound>
thanks
hi,
you can solve problem combining functoids custom xslt. final result should like:
inside scripting functoid (custom xslt), write following code:
<xsl:for-each select="s0:claimsresponse/s0:claimdetails">
<claimdetails>
<claim>
<no1>
<xsl:value-of select="s0:no/text()" />
</no1>
<xsl:for-each select="s0:services">
<mode1>
<xsl:value-of select='s0:mode/text()'/>
</mode1>
<state1>
<xsl:value-of select='s0:state/text()'/>
</state1>
<procedure1>
<xsl:value-of select='s0:procedure/text()'/>
</procedure1>
</xsl:for-each>
</claim>
<xsl:for-each select="s0:claims">
<claim>
<no1>
<xsl:value-of select='s0:no/text()'/>
</no1>
<xsl:for-each select="s0:services">
<mode1>
<xsl:value-of select='s0:mode/text()'/>
</mode1>
<state1>
<xsl:value-of select='s0:state/text()'/>
</state1>
<procedure1>
<xsl:value-of select='s0:procedure/text()'/>
</procedure1>
</xsl:for-each>
</claim>
</xsl:for-each>
</claimdetails>
</xsl:for-each>
if want project example, download here: https://www.dropbox.com/s/orc5gwr64gzs5iy/mapchallenge_08-10_2012.zip
hope you,
rui machado
rui machado
BizTalk Server > BizTalk Server General
Comments
Post a Comment