Go Up to Defining Transformations
The XML mapper utility, xmlmapper.exe, lets you define mappings in three ways:
- From an existing XML schema (or document) to a client dataset that you define. This is useful when you want to create a database application to work with data for which you already have an XML schema.
- From an existing data packet to a new XML schema you define. This is useful when you want to expose existing database information in XML, for example to create a new business-to-business communication system.
- Between an existing XML schema and an existing data packet. This is useful when you have an XML schema and a database that both describe the same information and you want to make them work together.
Note: XML mapper relies on two .DLLs (midas.dll and msxml.dll) to work correctly. Be sure that you have both of these .DLLs installed before you try to use xmlmapper.exe. In addition, msxml.dll must be registered as a COM server. You can register it using Regsvr32.exe.
Loading an XML schema or data packet
Before you can define a mapping and generate a transformation file, you must first load descriptions of the XML document and the data packet between which you are mapping.
You can load an XML document or schema by choosing File > Open and selecting the document or schema in the resulting dialog.
You can load a data packet by choosing File > Open and selecting a data packet file in the resulting dialog. (The data packet is simply the file generated when you call a client dataset's SaveToFile method.) If you have not saved the data packet to disk, you can fetch the data packet directly from the application server of a multitiered application by right-clicking in the Datapacket pane and choosing Connect To Remote Server.
You can load only an XML document or schema, only a data packet, or you can load both. If you load only one side of the mapping, XML mapper can generate a natural mapping for the other side.
The mapping between an XML document and a data packet does not need to include all of the fields in the data packet or all of the tagged elements in the XML document. Therefore, you must first specify those elements that are mapped. To specify these elements, first select the Mapping page in the central pane of the dialog.
To specify the elements of an XML document or schema that are mapped to fields in a data packet, select the Sample or Structure tab of the XML document pane and double-click the nodes for elements that map to data packet fields.
To specify the fields of the data packet that are mapped to tagged elements or attributes in the XML document, double-click the nodes for those fields in the Datapacket pane.
If you have only loaded one side of the mapping (the XML document or the data packet), you can generate the other side after you have selected the nodes that are mapped.
- If you are generating a data packet from an XML document, you first define attributes for the selected nodes that determine the types of fields to which they correspond in the data packet. In the center pane, select the Node Repository page. Select each node that participates in the mapping and indicate the attributes of the corresponding field. If the mapping is not straightforward (for example, a node with subnodes that corresponds to a field whose value is built from those subnodes), select the User Defined Translation check box. You will need to write an event handler later to perform the transformation on user-defined nodes. Once you have specified the way nodes are to be mapped, choose Create > Datapacket from XML. The corresponding data packet is automatically generated and displayed in the Datapacket pane.
- If you are generating an XML document from a data packet, choose Create > XML from Datapacket. A dialog appears where you can specify the names of the tags and attributes in the XML document that correspond to fields, records, and datasets in the data packet. For field values, the way you name them indicates whether they map to a tagged element with a value or to an attribute. Names that begin with an @ symbol map to attributes of the tag that corresponds to the record, while names that do not begin with an @ symbol map to tagged elements that have values and that are nested within the element for the record.
- If you have loaded both an XML document and a data packet (client dataset file), be sure you select the corresponding nodes in the same order. The corresponding nodes should appear next to each other in the table at the top of the Mapping page.
Once you have loaded or generated both the XML document and the data packet and selected the nodes that appear in the mapping, the table at the top of the Mapping page should reflect the mapping you have defined.
Generating transformation files
Once you define the mapping, you can generate the transformation files that are used to convert XML documents to data packets and to convert data packets to XML documents. Note that only the transformation file is directional: a single mapping can be used to generate both the transformation from XML to data packet and from data packet to XML.
To generate a transformation file:
- First select the radio button that indicates what the transformation creates:
- Choose the Datapacket to XML button if the mapping goes from data packet to XML document.
- Choose the XML to Datapacket button if the mapping goes from XML document to data packet.
- If you are generating a data packet, you will also want to use the radio buttons in the Create Datapacket As section. These buttons let you specify how the data packet will be used: as a dataset, as a delta packet for applying updates, or as the parameters to supply to a provider before fetching data.
- Click Create and Test Transformation to generate an in-memory version of the transformation. XML mapper displays the XML document that would be generated for the data packet in the Datapacket pane or the data packet that would be generated for the XML document in the XML Document pane.
- Finally, choose File > Save > Transformation to save the transformation file. The transformation file is a special XML file (with the .xtr extension) that describes the transformation you have defined.