The Data
The Data
This case-study uses three XML files:
q The incoming data (input, aka: "incoming.xml")
q The translation definition file (process, aka: "interpreter.xml")
q The translated data (output, seen from the test page)
Let's look at the structure of each of these:
Input XML
<?xml version='1.0'?>
<shipments>
  <shipment>
     <waybill>123WXZ99</waybill>
     <carrier>Fedex</carrier>
     <shipDate>20000110</shipDate>
     <boxes>3</boxes>
  </shipment>
  <shipment>
     <waybill>79843A</waybill>
     <carrier>UPS</carrier>
     <shipDate>20000110</shipDate>
     <boxes>2</boxes>
  </shipment>
  <shipment>
     <waybill>XXX12A</waybill>
     <carrier>Fedex</carrier>
     <shipDate>20000110</shipDate>
     <boxes>8</boxes>
  </shipment>
</shipments>
Output XML
<?xml version='1.0'?>
<shipments>
  <shipment>
     <waybill>123WXZ99</waybill>
     <shippedby>Fedex</shippedby>
     <shipped>20000110</shipped>
     <numberOfBoxes>3</numberOfBoxes>
  </shipment>
  <shipment>
     <waybill>79843A</waybill>
     <shippedby>UPS</shippedby>
     <shipped>20000110</shipped>
     <numberOfBoxes>2</numberOfBoxes>
  </shipment>
  <shipment>
     <waybill>XXX12A</waybill>
     <shippedby>Fedex</shippedby>
     <shipped>20000110</shipped>
     <numberOfBoxes>8</numberOfBoxes>
  </shipment>
</shipments>
The Translation Process
As you can see, the input and desired output files have a similar structure, but there are three differences:
q "carrier" becomes "shippedby"
q "shipDate" becomes "shipped"
q "boxes" becomes "numberOfBoxes"
The required element mapping is defined in the following XML file:
<?xml version='1.0'?>
<shipments>
  <shipment>
     <xlat>
        <in name="waybill"/>
        <out name="waybill"/>
     </xlat>
     <xlat>
        <in name="carrier"/>
        <out name="shippedby"/>
     </xlat>
     <xlat>
        <in name="shipDate"/>
        <out name="shipped"/>
     </xlat>
     <xlat>
        <in name="boxes"/>
        <out name="numberOfBoxes"/>
     </xlat>
  </shipment>
</shipments>
As you can see, each <xlat> element contains an input element name and an output element name. This is the mapping we will use when we build our XSL. Note that the first of the <xlat> elements does something rather pointless – replacing "waybill" with "waybill". This has been included just to keep the code as simple as possible. You could put in some code to tell the interpreter not to process the <waybill> tags and only change the others.
We could easily create similar translation documents for any number of input documents. This would allow us to translate all input documents with the same ASP page.
Produced by Michael Claßen
All Rights Reserved. Legal Notices.
URL: https://www.webreference.com/xml/resources/books/professionalaspxml/40281002.htm
Created: Jan. 05, 2001
Revised: Jan. 05, 2001