Tuesday, November 13, 2012

Using inline XSLT in BizTalk Map.

We can use inline XSLT in Biztalk maps for transformations. I'll be using inline XSLT and calling a simple C# class in the XSLT. For this we have to write XSLT in scripting functiod also write a class in inline c# of scripting functiod.

Below is the source schema used for map.

Destination Schema is :

Map goes like this :

XSLT goes like this :

<xsl:for-each select = "Root">
<Name><xsl:value-of select = "Name/text()" />
</Name><ID><xsl:value-of select ="ID/text()"/>
</ID><xsl:variable name="var:v1" select="userCSharp:concatAddress(string(Name/text()) , string(Address/text()))" />
<xsl:value-of select ="$var:v1" />
<xsl:variable name="var:v2" select = "userCSharp:AddID (string (ID/text() ),string(Roll_No/text()))"/>
<Roll_No><xsl:value-of select = "$var:v2"/>
</Roll_No><xsl:if test="not(string(ID/text())=0)">
<xsl:value-of select ="ID/text()"/>

C# script goes like this :

public string concatAddress(string Name, string Address){

return Name + Address;}
public int AddID(int ID,int RollNo){

return ( ID + RollNo); }

In XSLT code I have called both these methods. Just droppping the inline C# functiod on mapper surface will work fine,also we don't have to connect this sfunctiod to any node in destination schema.

No comments:

Post a Comment