The Xml Transform Component allows you to map between Xml formats. You can also map between Xml and EDI, HL7, CSV, positional and delimited files.
To configure this component, simply drag an instance onto the control-flow surface and double-click to configure. The following interface is presented :

This provides options to select the variables containing the source and destination content. Note - messages are generally assumed to be in text form unless your Message variable is of type Object, in which case the message is retrieved as a binary array (byte[]). Conversion between text and binary representations is performed as required according to the Encoding property, accessible only through the SQL Server Integration Services Property window.
The EDI tab allows you to configure an EDI Configuration database and other EDI
settings if you wish to convert to or from EDI schema. Please see the
Convert Component
for further details.
Clicking the
Edit Mapping... button launches the graphical mapping tool.

This tool allows you to drag links from the source (left) side to the destination (right side). You can link to and from content or variables. These can be direct links, or via functoids - units of reusable logic. Functoids provide logic including comparisons, counting, mathematical operations, lookups, accumulations, xpath querying, string functions and date / time arithmetic. They can also provide more sophisticated functionality, including database lookups, script functions, enumeration, duplicate elimination, grouping and execution control. To use a functoid, simply drag it from the functoid area on the right onto the main page (between the source and destination areas), and then connect its' inputs and outputs by drag and drop. You can test your map using the functions in the Tools menu.
When you edit a map for the first time, the source and destination schemas will be empty (RAW). This is essentially binary file mode, allowing you to perform operations on the content of the file as a whole and any variables. To set source and destination schemas,
enabling us to manipulate individual fields within the message, click the relevant links above the source and destination trees. The schema editor is presented :

This launches the
BlueSSIS Schema editor, within which you can intuitively define Xml schemas and
alternative representations.

You can enter XSD directly, or use the tree view to create a hierarchical structure interactively. You can right-click in the tree control or use the Insert menu to modify the structure. The Properties window allows you to configure advanced properties in relation to the selected item in the tree view.
To define an alternative representation, or more typically to generate an Xml schema from an alternate representation, you can use the Special Schemas form, accessible from the Tools menu and also shown by default the first time the schema editor is launched.
This form guides you through the process of defining a CSV, flat-file (positional or delimited), HL7 or EDI schema. For further details please see the associated help pages for
BlueIntegrator, our sister product on which this functionality is based, on
Special Schemas and
The Schema Editor. You may also be interested in our notes on
setting up a simple HL7 scenario.
After selecting schemas, the elements of the schema are shown in the source and
destination trees and can be linked as required.

The graphical mapping tool is also part of our sister application BlueIntegrator, and
full help can be found here. Essentially though at execution time the nodes in the source document are executed in order, passing through functoids as appropriate. Destination nodes are then written to the output document, but are sorted by the hierarchy of the output schema. As values are pushed out from the source document they are active, and active values arriving at the destination will always trigger the creation of a new data item. You can also manually trigger the creation of a new parent element by firing an active value at it. Variables, functoids with no inputs, or functoids with inactive inputs produce passive values, which are used but do not in themselves trigger the creation of a data node. The Passive Values functoid can be used to explicitly make an active value passive, and thus prevent superfluous outputs.