In this post, you will learn to create and use XSL maps in message flow using the same Service Bus project used in previous posts.
And here we are creating XSLT map for Customer transformation. The Source WSDL CustomerPS.wsdl and Target WSDL CustomerService.wsdl are available here and here respectively. Make sure that you have these WSDLs copied in your project before proceeding with XSL map creation.
Creating XSL map:
Right click XSLTs folder in XYZCustomer project and select New -> XSL Map and give File Name as CustomerPSToUpdateCustomer.
Click Browse for Primary Source to bring up Select Schema screen.
Retain default selection and click Browse to select the source element.
Click OK twice to go back to Create XSL Map screen. Now click Browse for Target to bring up Select Schema screen again. And click Browse for Select Schema and select the target element as shown below.
Click OK twice and observe Source and Target elements.
Click OK to finish that brings up XSLT Transformation editor as shown below.
Here we are planning to do update of Customer Information, so you should not send null values in payload to business service; hence Target elements should be mapped only when corresponding Source element is available.
You can achieve this behavior automatically in XSL Map editor by setting a preference. Go to Tools -> Preferences and set property as shown below.
Now go back to XSL Map editor and do the initial mapping as shown below by connecting respective Source and Target elements. Observe that xsl:if condition gets added automatically when source element is defined as optional in schema.
Drag concat function into middle swim lane from Components-> General XPath -> String Functions to concatenate FirstName, Lastame and map to full_name. Also concatenate State, Country and ZipCode and map to addr_line4 as shown below.
Click concat functions and modify them to add ‘,’ between elements as shown below.
Now go to Source and modify full_name and addr_line4 elements mapping to include xsl:if conditions so that Target will be mapped only when all of the corresponding Source elements are present.
Testing XSL map:
It’s always advisable to test your XSL map to see whether mapping is working as expected. Click Test XSL Map icon in editor to bring up the following screen.
Click OK and observe that mapping is working as expected as shown below. You can also verify that both Source and Target xml files are generated. You can modify source xml and retest your XSL map again.
Using XSL map in Message Flow:
Drag Replace activity from Message Processing into message flow at place wherever you require transformation. In Properties tab, bring up expression editor for Value property and choose XSL map as shown below.
Click OK and give Input Document Expression as $body/*.
Set other properties as shown below. This action will replace the contents of $body context variable with transformed payload.
Nice post. Thank you to share it!