Home Page › Forums › BizTalk 2004 – BizTalk 2010 › Biztalk Schema for varying role for a given partner › Re: Biztalk Schema for varying role for a given partner
Hi:
After working at this for a while, there is no easy solution to it than good old XSLT Loop inside a loop. Here what I finally did and working in production.
Cheers, Toraj
<xsl:for-each select="../Partner">
<ns0:Record-XMNREF0 xmlns:ns0="urn:ProcessPartner">
<ns0:Col-CLIENT>
<xsl:value-of select="Client/text()" />
</ns0:Col-CLIENT>
<ns0:Col-NRTYPE>
<xsl:value-of select="PartnerType/text()" />
</ns0:Col-NRTYPE>
<ns0:Col-NRNREF>
<xsl:value-of select="PartnerReference/text()" />
</ns0:Col-NRNREF>
<ns0:Col-NRPGRP>
<xsl:value-of select="PartnerGroup/text()" />
</ns0:Col-NRPGRP>
<ns0:Col-NRNAME>
<xsl:value-of select="PartnerName/text()" />
</ns0:Col-NRNAME>
<ns0:Col-NRADR1>
<xsl:value-of select="AddressLine1/text()" />
</ns0:Col-NRADR1>
…
<ns0:Col-NRDATE>
<xsl:value-of select="Date/text()" />
</ns0:Col-NRDATE>
<ns0:Col-NRTIME>
<xsl:value-of select="substring(Time, 1, 4)" />
</ns0:Col-NRTIME>
<!– Patner Reference –>
<xsl:variable name ="prtRef" select="PartnerReference/text()"/>
<xsl:for-each select="../Role">
<!– Role Reference –>
<xsl:variable name="refRef" select="string(Reference)"/>
<xsl:if test="($refRef = $prtRef)">
<!–Put the Role information inside the current Partner node only if Role belong to current Partner–>
<ns0:Record-XMNIRL0 xmlns:ns0="urn:ProcessPartner">
<ns0:Col-CLIENT>
<xsl:value-of select="Client/text()" />
</ns0:Col-CLIENT>
<ns0:Col-NITYPE>
<xsl:value-of select="PartnerRoleType/text()" />
</ns0:Col-NITYPE>
<ns0:Col-NINREF>
<xsl:value-of select="Reference/text()" />
</ns0:Col-NINREF>
……
<ns0:Col-NIDATE>
<xsl:value-of select="Date/text()" />
</ns0:Col-NIDATE>
<ns0:Col-NITIME>
<xsl:value-of select="substring(Time, 1, 4)" />
</ns0:Col-NITIME>
</ns0:Record-XMNIRL0>
</xsl:if>
</xsl:for-each>
</ns0:Record-XMNREF0>
</xsl:for-each>