We can use <xsl;choose> in BizTalk mapper using inline XSLT.
Scenario : Suppose if a XML is coming to BizTalk server and we have to check that if a customer is 'Premium' or 'Normal' or anything then we can use <xsl:choose> to check these conditions.
Source Schema :
Destination Schema :
Map:
In BizTalk Mapper we can add a scripting functiod and add the inline XSLT to the functiod.
Inline XSLT :
<EmployeeDetail>
<xsl:for-each select ="Data">
<Details>
<xsl:variable name="var:v1" select="EmployeeType/text()" />
<xsl:choose>
<xsl:when test="$var:v1 = 'Premium'">
<Name>
<xsl:value-of select="Employee_Name/text()"/>
</Name>
</xsl:when>
<xsl:when test="$var:v1 = 'Normal'">
<ID>
<xsl:value-of select="EmployeeID/text()"/>
</ID>
</xsl:when>
<xsl:otherwise>
<Address>
<xsl:value-of select="Address/text()"/>
</Address>
</xsl:otherwise>
</xsl:choose>
</Details>
</xsl:for-each>
</EmployeeDetail>
Input XML:
Case 1:
<?xml version="1.0"?>
-<ns0:Employee xmlns:ns0="http://XSLT_Test.Source">
-<Data>
<Employee_Name>John</Employee_Name>
<EmployeeType>Premium</EmployeeType>
<EmployeeID>10</EmployeeID>
<Address>44,Manhatton</Address>
<PhoneNo>9986647474</PhoneNo>
</Data>
</ns0:Employee>
Case 2:
<?xml version="1.0"?>
-<ns0:Employee xmlns:ns0="http://XSLT_Test.Source">
-<Data>
<Employee_Name>John</Employee_Name>
<EmployeeType>Premium</EmployeeType>
<EmployeeID>10</EmployeeID>
<Address>44,Manhatton</Address>
<PhoneNo>9986647474</PhoneNo>
</Data>
</ns0:Employee>
Case 3:
<?xml version="1.0"?>
-<ns0:Employee xmlns:ns0="http://XSLT_Test.Source">
-<Data>
<Employee_Name>John</Employee_Name>
<EmployeeType>Invalid</EmployeeType>
<EmployeeID>10</EmployeeID>
<Address>44,Manhatton</Address>
<PhoneNo>9986647474</PhoneNo>
</Data>
</ns0:Employee>
Test Map Results :
We can Test the map using "Test Map" and following are the results :
Case 1 :
<EmployeeDetail xmlns:ns0="http://XSLT_Test.Destination">
<Details>
Scenario : Suppose if a XML is coming to BizTalk server and we have to check that if a customer is 'Premium' or 'Normal' or anything then we can use <xsl:choose> to check these conditions.
Source Schema :
Destination Schema :
Map:
In BizTalk Mapper we can add a scripting functiod and add the inline XSLT to the functiod.
Inline XSLT :
<EmployeeDetail>
<xsl:for-each select ="Data">
<Details>
<xsl:variable name="var:v1" select="EmployeeType/text()" />
<xsl:choose>
<xsl:when test="$var:v1 = 'Premium'">
<Name>
<xsl:value-of select="Employee_Name/text()"/>
</Name>
</xsl:when>
<xsl:when test="$var:v1 = 'Normal'">
<ID>
<xsl:value-of select="EmployeeID/text()"/>
</ID>
</xsl:when>
<xsl:otherwise>
<Address>
<xsl:value-of select="Address/text()"/>
</Address>
</xsl:otherwise>
</xsl:choose>
</Details>
</xsl:for-each>
</EmployeeDetail>
Input XML:
Case 1:
<?xml version="1.0"?>
-<ns0:Employee xmlns:ns0="http://XSLT_Test.Source">
-<Data>
<Employee_Name>John</Employee_Name>
<EmployeeType>Premium</EmployeeType>
<EmployeeID>10</EmployeeID>
<Address>44,Manhatton</Address>
<PhoneNo>9986647474</PhoneNo>
</Data>
</ns0:Employee>
Case 2:
<?xml version="1.0"?>
-<ns0:Employee xmlns:ns0="http://XSLT_Test.Source">
-<Data>
<Employee_Name>John</Employee_Name>
<EmployeeType>Premium</EmployeeType>
<EmployeeID>10</EmployeeID>
<Address>44,Manhatton</Address>
<PhoneNo>9986647474</PhoneNo>
</Data>
</ns0:Employee>
Case 3:
<?xml version="1.0"?>
-<ns0:Employee xmlns:ns0="http://XSLT_Test.Source">
-<Data>
<Employee_Name>John</Employee_Name>
<EmployeeType>Invalid</EmployeeType>
<EmployeeID>10</EmployeeID>
<Address>44,Manhatton</Address>
<PhoneNo>9986647474</PhoneNo>
</Data>
</ns0:Employee>
Test Map Results :
We can Test the map using "Test Map" and following are the results :
Case 1 :
<EmployeeDetail xmlns:ns0="http://XSLT_Test.Destination">
<Details>
<Name>John</Name>
</Details>
</EmployeeDetail>
Case 2 :
<EmployeeDetail xmlns:ns0="http://XSLT_Test.Destination">
<EmployeeDetail xmlns:ns0="http://XSLT_Test.Destination">
<Details>
<ID>10</ID>
</Details>
</EmployeeDetail>
Case 3 :
<EmployeeDetail xmlns:ns0="http://XSLT_Test.Destination">
<Details>
<EmployeeDetail xmlns:ns0="http://XSLT_Test.Destination">
<Details>
<Address>44,Manhatton</Address>
</Details>
</EmployeeDetail>
From above result we can see that how <xsl:choose> can be used to decide on the conditions.
When the input was a 'Premium' customer then the result was only 'Name' field.
When the input was a 'Normal' customer then the result was only 'ID' field.
When the input was a 'Invalid' customer then the result was only 'Address' field.
This is very nice blog,and it is helps for student's.Thanks for info
ReplyDeleteBiztalk online training
Code works .Useful for freshers Biztalk online course Bangalore
ReplyDelete