The starting point beeing a simple SOA prototype involving a TroubleTicket (TT) service consumer and TT service provider, I will now add data transformation within a XSLT SE.
First part of the development is to create the XSLT module. This includes three steps:
- First the WSDL description, with input and output types of course, and all the others required tags (Messages, Port Types, Binding, Service and finally Partners) must be written.
- Then the XSLT transformation has to be implemented. It specifies the data returned by the service (in a file with the ".xsl" extension). A XSLT transformation enables many data manipulations ; for example setting a null field to a default value if this field is required by another service provider, changing date format (from one field to three), or even setting a field with a value get from a database.
- Lastly, a XML configuration file called "xsltmap" must be provided.It specifies amongst other things the request type, and other information relativ to the input fo this XSLT service. Here is a concrete simple example of such an XSLT map in this TT particular case:

So the XSLT module has been fully defined, it is ready to be build and integrated into the existing JBI application.
Of course, the BPEL module orchestrating the process has to be modified so that this data transformation module is called before invoking the TT service provider deployed in the local application server and available through the JavaEE SE.
Finally, the second composite prototype can be deployed and tested, in the same way as before. By changing client data format to corrsepond to the one expected by the TroubleTicket service offered by the BPEL module, same client can be reuse for this test.
This application illustrates logic decoupling enabled by SOA. In particular, data format transformation is here realized inside the SOA environment, so that it is completely transparent for each actor (service provider and consumer).