How to convert xml to soap message using XSLT in mule?
I am using mule community addition so I can't use mule datamapper.
Can any one help me how to convert xml to soap message using XSLT tranformation?
I have below xml:
<file>
<header>
<documentType>CEN_ORD</documentType>
<version>1.0</version>
<createDate>01/01/15 02:11</createDate>
<originator>IKEA</originator>
<timeZone>PST</timeZone>
<dateFormat>MM/dd/yy HH:mm</dateFormat>
<currencyFormat>USD</currencyFormat>
<weightUnits>lbs</weightUnits>
<linearUnits>meter</linearUnits>
<priceBuCode>158</priceBuCode>
<routeBuCode>158</routeBuCode>
<serviceProviderAbbreviation />
<serviceProviderId />
<origin>158STO</origin>
<destination />
</header>
<data>
<deliveryOrder>
<deliveryMethod>LCD zone D future</deliveryMethod>
<excReturn>FALSE</excReturn>
<operation>Update</operation>
<deliveryType>HDF</deliveryType>
<totalArticleQuantity>9</totalArticleQuantity>
<totalArticlePackages>10</totalArticlePackages>
<totalArticleWeight>438.9512922</totalArticleWeight>
<totalArticleVolume>1.0083</totalArticleVolume>
<sacId />
<businessUnit>
<code>158</code>
<countryCode>US</countryCode>
<languageCode>SWE</languageCode>
<name />
<phone />
<text />
<timeZone />
<daylightSavings />
</businessUnit>
<orderCustomer>
<priceBu>158</priceBu>
<orderNumber>192963803</orderNumber>
<type>LCD</type>
<customerName>Nefail Aljic</customerName>
<attention />
<careOfName />
<addr1>147 Notre Dame Ave, apt #3</addr1>
<addr2>Hillsborough</addr2>
<addr3 />
<city>Manchester</city>
<state>NH</state>
<zipCode>03102</zipCode>
<countryCode>US</countryCode>
<dayPhone>603 315 4161</dayPhone>
<eveningPhone />
<cellPhone />
<fax />
<email>nefail74@msn.com</email>
</orderCustomer>
<packages>
<package>
<packageNumber>100052526030</packageNumber>
<packageWeight>43.89512922</packageWeight>
<packageVolume>0.10083</packageVolume>
<palletNumber />
<mixedPallet>N/A</mixedPallet>
</package>
</packages>
<order>
<priceBu>158</priceBu>
<number>192963803</number>
<createDate>01/01/15</createDate>
<shipmentNo>100052526030</shipmentNo>
<departureNo/>
<departureDate>12/31/14 20:06</departureDate>
<status />
<deliveryDate>01/10/15 08:00</deliveryDate>
<deliveryDateFrom>01/10/15 08:00</deliveryDateFrom>
<deliveryDateTo>01/10/15 22:00</deliveryDateTo>
<cancelDate />
<createUserId />
<vehicleId />
</order>
<orderLines>
<orderLine>
<priceBu>158</priceBu>
<orderNumber />
<lineNumber>0</lineNumber>
<articleNumber>40214551</articleNumber>
<articleQuantity>0</articleQuantity>
<originalArticleQuantity>1</originalArticleQuantity>
<articlePackages />
<articleReferenceNumber />
<isOutOfStore />
<receivedDate />
<storageLocation />
<receiptDate />
<moveVehicleId />
<moveDate />
<languageCode />
<number>40214551</number>
<description>MALM chst/3drw 31 5/8x30 3/4" white N</description>
<weight>77.27123</weight>
<volume>0.0744</volume>
</orderLine>
</orderLines>
<orderComment>
<priceBu>158</priceBu>
<orderNumber>192963803</orderNumber>
<createDate />
<commentCode>15</commentCode>
<commentValue>YES</commentValue>
<commentText>3</commentText>
<userId />
</orderComment>
<orderComment>
<priceBu>158</priceBu>
<orderNumber>192963803</orderNumber>
<createDate />
<commentCode>15</commentCode>
<commentValue>YES</commentValue>
<commentText>3</commentText>
<userId />
</orderComment>
</deliveryOrder>
</data>
</file>
And soap request is
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ship="url">
<soap:Header/>
<soap:Body>
<ship:SendShipmentProcessRequest>
<!--Optional:-->
<ship:ShipmentProcessRequest>
<!--Optional:-->
<ship:ShipmentProcess>
<!--Optional:-->
<ship:DocumentType>?</ship:DocumentType>
<!--Optional:-->
<ship:Version>?</ship:Version>
<ship:CreateDate>?</ship:CreateDate>
<!--Optional:-->
<ship:Originator>?</ship:Originator>
<!--Optional:-->
<ship:TimeZone>?</ship:TimeZone>
<!--Optional:-->
<ship:DateFormat>?</ship:DateFormat>
<!--Optional:-->
<ship:CurrencyFormat>?</ship:CurrencyFormat>
<!--Optional:-->
<ship:WeightUnits>?</ship:WeightUnits>
<!--Optional:-->
<ship:LinearUnits>?</ship:LinearUnits>
<!--Optional:-->
<ship:PriceBuCode>?</ship:PriceBuCode>
<!--Optional:-->
<ship:RouteBuCode>?</ship:RouteBuCode>
<!--Optional:-->
<ship:ServiceProviderAbbreviation>?</ship:ServiceProviderAbbreviation>
<!--Optional:-->
<ship:ServiceProviderId>?</ship:ServiceProviderId>
<!--Optional:-->
<ship:Origin>?</ship:Origin>
<!--Optional:-->
<ship:Destination>?</ship:Destination>
<!--Optional:-->
<ship:DeliveryOrders>
<!--Zero or more repetitions:-->
<ship:DeliveryOrder>
<!--Optional:-->
<ship:DeliveryMethod>?</ship:DeliveryMethod>
<!--Optional:-->
<ship:SACId>?</ship:SACId>
<!--Optional:-->
<ship:Operation>?</ship:Operation>
<!--Optional:-->
<ship:DeliveryType>?</ship:DeliveryType>
<ship:IsExchange>?</ship:IsExchange>
<ship:IsMerge>?</ship:IsMerge>
<!--Optional:-->
<ship:MergeOrderNumber>?</ship:MergeOrderNumber>
<ship:TotalArticleQuantity>?</ship:TotalArticleQuantity>
<ship:TotalArticlePackages>?</ship:TotalArticlePackages>
<ship:TotalArticleWeight>?</ship:TotalArticleWeight>
<ship:TotalArticleVolume>?</ship:TotalArticleVolume>
<!--Optional:-->
<ship:BusinessUnit>
<!--Optional:-->
<ship:Code>?</ship:Code>
<!--Optional:-->
<ship:CountryCode>?</ship:CountryCode>
<!--Optional:-->
<ship:LanguageCode>?</ship:LanguageCode>
<!--Optional:-->
<ship:Name>?</ship:Name>
<!--Optional:-->
<ship:Phone>?</ship:Phone>
<!--Optional:-->
<ship:Text>?</ship:Text>
<!--Optional:-->
<ship:TimeZone>?</ship:TimeZone>
<ship:DaylightSavings>?</ship:DaylightSavings>
</ship:BusinessUnit>
<!--Optional:-->
<ship:OrderCustomer>
<!--Optional:-->
<ship:PriceBu>?</ship:PriceBu>
<!--Optional:-->
<ship:OrderNumber>?</ship:OrderNumber>
<!--Optional:-->
<ship:Type>?</ship:Type>
<!--Optional:-->
<ship:CustomerName>?</ship:CustomerName>
<!--Optional:-->
<ship:Addr1>?</ship:Addr1>
<!--Optional:-->
<ship:Addr2>?</ship:Addr2>
<!--Optional:-->
<ship:Addr3>?</ship:Addr3>
<!--Optional:-->
<ship:City>?</ship:City>
<!--Optional:-->
<ship:State>?</ship:State>
<!--Optional:-->
<ship:ZipCode>?</ship:ZipCode>
<!--Optional:-->
<ship:CountryCode>?</ship:CountryCode>
<!--Optional:-->
<ship:DayPhone>?</ship:DayPhone>
<!--Optional:-->
<ship:EveningPhone>?</ship:EveningPhone>
<!--Optional:-->
<ship:CellPhone>?</ship:CellPhone>
<!--Optional:-->
<ship:Fax>?</ship:Fax>
<!--Optional:-->
<ship:Email>?</ship:Email>
</ship:OrderCustomer>
<!--Optional:-->
<ship:OrderSource>
<!--Optional:-->
<ship:OrderNumber>?</ship:OrderNumber>
<!--Optional:-->
<ship:Type>?</ship:Type>
<!--Optional:-->
<ship:FirstName>?</ship:FirstName>
<!--Optional:-->
<ship:LastName>?</ship:LastName>
<!--Optional:-->
<ship:Addr1>?</ship:Addr1>
<!--Optional:-->
<ship:Addr2>?</ship:Addr2>
<!--Optional:-->
<ship:Addr3>?</ship:Addr3>
<!--Optional:-->
<ship:City>?</ship:City>
<!--Optional:-->
<ship:State>?</ship:State>
<!--Optional:-->
<ship:ZipCode>?</ship:ZipCode>
<!--Optional:-->
<ship:CountryCode>?</ship:CountryCode>
<!--Optional:-->
<ship:DayPhone>?</ship:DayPhone>
<!--Optional:-->
<ship:EveningPhone>?</ship:EveningPhone>
<!--Optional:-->
<ship:CellPhone>?</ship:CellPhone>
<!--Optional:-->
<ship:Fax>?</ship:Fax>
<!--Optional:-->
<ship:Email>?</ship:Email>
</ship:OrderSource>
<ship:HasPackages>?</ship:HasPackages>
<!--Optional:-->
<ship:Packages>
<!--Zero or more repetitions:-->
<ship:Package>
<!--Optional:-->
<ship:PackageNumber>?</ship:PackageNumber>
<ship:PackageWeight>?</ship:PackageWeight>
<ship:PackageVolume>?</ship:PackageVolume>
<!--Optional:-->
<ship:PalletNumber>?</ship:PalletNumber>
<!--Optional:-->
<ship:MixedPallet>?</ship:MixedPallet>
</ship:Package>
</ship:Packages>
<!--Optional:-->
<ship:Order>
<!--Optional:-->
<ship:PriceBu>?</ship:PriceBu>
<!--Optional:-->
<ship:Number>?</ship:Number>
<!--Optional:-->
<ship:IdentifierKey>?</ship:IdentifierKey>
<ship:CreateDate>?</ship:CreateDate>
<!--Optional:-->
<ship:BOLNo>?</ship:BOLNo>
<!--Optional:-->
<ship:DepartureNo>?</ship:DepartureNo>
<ship:DepartureDate>?</ship:DepartureDate>
<!--Optional:-->
<ship:Status>?</ship:Status>
<ship:HasDeliveryDate>?</ship:HasDeliveryDate>
<ship:DeliveryDate>?</ship:DeliveryDate>
<ship:DeliveryDateFrom>?</ship:DeliveryDateFrom>
<ship:DeliveryDateTo>?</ship:DeliveryDateTo>
<ship:CancelDate>?</ship:CancelDate>
<!--Optional:-->
<ship:CreateUserId>?</ship:CreateUserId>
<ship:UpdateDate>?</ship:UpdateDate>
<!--Optional:-->
<ship:UpdateUserId>?</ship:UpdateUserId>
<!--Optional:-->
<ship:VehicleId>?</ship:VehicleId>
<ship:HasOrderLines>?</ship:HasOrderLines>
<!--Optional:-->
<ship:OrderLines>
<!--Zero or more repetitions:-->
<ship:OrderLine>
<!--Optional:-->
<ship:PriceBu>?</ship:PriceBu>
<!--Optional:-->
<ship:OrderNumber>?</ship:OrderNumber>
<ship:LineNumber>?</ship:LineNumber>
<!--Optional:-->
<ship:ArticleNumber>?</ship:ArticleNumber>
<ship:ArticleQuantity>?</ship:ArticleQuantity>
<ship:OriginalArticleQuantity>?</ship:OriginalArticleQuantity>
<ship:ArticlePackages>?</ship:ArticlePackages>
<!--Optional:-->
<ship:ArticleReferenceNumber>?</ship:ArticleReferenceNumber>
<ship:IsOutOfStore>?</ship:IsOutOfStore>
<ship:ReceivedDate>?</ship:ReceivedDate>
<!--Optional:-->
<ship:StorageLocation>?</ship:StorageLocation>
<ship:ReceiptDate>?</ship:ReceiptDate>
<!--Optional:-->
<ship:MoveVehicleId>?</ship:MoveVehicleId>
<ship:MoveDate>?</ship:MoveDate>
<!--Optional:-->
<ship:Description>?</ship:Description>
<ship:Weight>?</ship:Weight>
<ship:Volume>?</ship:Volume>
</ship:OrderLine>
</ship:OrderLines>
<ship:HasOrderComments>?</ship:HasOrderComments>
<!--Optional:-->
<ship:OrderComments>
<!--Zero or more repetitions:-->
<ship:OrderComment>
<!--Optional:-->
<ship:PriceBu>?</ship:PriceBu>
<!--Optional:-->
<ship:OrderNumber>?</ship:OrderNumber>
<ship:CreateDate>?</ship:CreateDate>
<!--Optional:-->
<ship:CommentCode>?</ship:CommentCode>
<!--Optional:-->
<ship:CommentText>?</ship:CommentText>
<!--Optional:-->
<ship:UserId>?</ship:UserId>
</ship:OrderComment>
</ship:OrderComments>
</ship:Order>
<ship:HasOrderSourceAddress>?</ship:HasOrderSourceAddress>
<ship:UseSourceAddressLookup>?</ship:UseSourceAddressLookup>
<!--Optional:-->
<ship:SourceAddressLookupCode>?</ship:SourceAddressLookupCode>
</ship:DeliveryOrder>
</ship:DeliveryOrders>
</ship:ShipmentProcess>
</ship:ShipmentProcessRequest>
</ship:SendShipmentProcessRequest>
</soap:Body>
</soap:Envelope>
So based on what I said in the comments below one of the answers, here is a draft XSLT that should be used for this transformation. I did not run it as it's not completed, there are number of simple templates that need to be added. if you have any questions then please do let me know.
All the elements that are in between XSLT should be matched and if you have some knowledge of XSLT or you want to learn then you will be able to complete this XSLT. If you want to ignore some elements then
<xsl:templates match="elementname"/>
does the trick.You can use the following XSLT to map each elements of your input.xml :-
Please note that I have mapped only first 4 elements (up to originator) rest nodes you can map same way as I did .. you only need to change the xpath .. for example ..
for originator element the xpath will be :-
file/header/originator/text()
and for timezone it will befile/header/timeZone/text()
and so on ...