xsl-list
[Top] [All Lists]

"FLAT" XML to Hierarchical XML

2004-09-24 07:17:28
I have an XML file that is based on a CSV file. I now need to give this Flat File a Hierarchical structure.

This is the XML Source:
<?xml version="1.0" standalone="yes"?>
<Orders_Dataset>
   <Orders>
       <Order_Number>10909420</Order_Number>
       <Ship_To_First_Name>Richelle</Ship_To_First_Name>
       <Ship_To_Last_Name>Zuniga</Ship_To_Last_Name>
       <Ship_To_Address_1>2330 Deasa DR</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>spring</Ship_To_City>
       <Ship_To_State>TX</Ship_To_State>
       <Ship_To_Zip>77373</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>21BU01439</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>47</Our_Cost>
       <Qty>1</Qty>
       <Description>Betula Birkenstock Rock Taupe Suede Clog</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10906441</Order_Number>
       <Ship_To_First_Name>Lori</Ship_To_First_Name>
       <Ship_To_Last_Name>Short</Ship_To_Last_Name>
       <Ship_To_Address_1>1253 Lane on the Lake</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Columbus</Ship_To_City>
       <Ship_To_State>OH</Ship_To_State>
       <Ship_To_Zip>43235</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>21BU01437</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>47</Our_Cost>
       <Qty>1</Qty>
       <Description>Betula Birkenstock Rock Taupe Suede Clog</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10906441</Order_Number>
       <Ship_To_First_Name>Lori</Ship_To_First_Name>
       <Ship_To_Last_Name>Short</Ship_To_Last_Name>
       <Ship_To_Address_1>1253 Lane on the Lake</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Columbus</Ship_To_City>
       <Ship_To_State>OH</Ship_To_State>
       <Ship_To_Zip>43235</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>21BU01337</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>40.75</Our_Cost>
       <Qty>1</Qty>
<Description>Betula Birkenstock Womens Rock Black Suede Clog</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10906410</Order_Number>
       <Ship_To_First_Name>Tom</Ship_To_First_Name>
       <Ship_To_Last_Name>Vitti</Ship_To_Last_Name>
       <Ship_To_Address_1>1618 N. Gardiner Dr</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Bay Shore</Ship_To_City>
       <Ship_To_State>NY</Ship_To_State>
       <Ship_To_Zip>11706</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>21BU00946</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>41</Our_Cost>
       <Qty>1</Qty>
<Description>Betula Birkenstock Boogie Black Suede 2 Strap Sandals</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10906772</Order_Number>
       <Ship_To_First_Name>Denise</Ship_To_First_Name>
       <Ship_To_Last_Name>Rhoney</Ship_To_Last_Name>
       <Ship_To_Address_1>12452 Woodgate Drive</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Plymouth</Ship_To_City>
       <Ship_To_State>MI</Ship_To_State>
       <Ship_To_Zip>48170</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>21BU01339</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>40.75</Our_Cost>
       <Qty>1</Qty>
<Description>Betula Birkenstock Womens Rock Black Suede Clog</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10906772</Order_Number>
       <Ship_To_First_Name>Denise</Ship_To_First_Name>
       <Ship_To_Last_Name>Rhoney</Ship_To_Last_Name>
       <Ship_To_Address_1>12452 Woodgate Drive</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Plymouth</Ship_To_City>
       <Ship_To_State>MI</Ship_To_State>
       <Ship_To_Zip>48170</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>21BU01040</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>46</Our_Cost>
       <Qty>1</Qty>
<Description>Betula Birkenstock Boogie Taupe Suede 2-strap Sandals</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10902523</Order_Number>
       <Ship_To_First_Name>Robin</Ship_To_First_Name>
       <Ship_To_Last_Name>Childs</Ship_To_Last_Name>
       <Ship_To_Address_1>PO Drawer 7928</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Hilton Head Isl</Ship_To_City>
       <Ship_To_State>SC</Ship_To_State>
       <Ship_To_Zip>29938</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>1101015E</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>50</Our_Cost>
       <Qty>1</Qty>
       <Description>Head Intelligence i.Tour Tennis Racquet</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10902523</Order_Number>
       <Ship_To_First_Name>Robin</Ship_To_First_Name>
       <Ship_To_Last_Name>Childs</Ship_To_Last_Name>
       <Ship_To_Address_1>PO Drawer 7928</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Hilton Head Isl</Ship_To_City>
       <Ship_To_State>SC</Ship_To_State>
       <Ship_To_Zip>29938</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>1101035D</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>50</Our_Cost>
       <Qty>1</Qty>
       <Description>Head Intelligence I.S 2 MP Tennis Racquet</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
   <Orders>
       <Order_Number>10897375</Order_Number>
       <Ship_To_First_Name>vitaly</Ship_To_First_Name>
       <Ship_To_Last_Name>vatnikov</Ship_To_Last_Name>
       <Ship_To_Address_1>14 Paradise Rd.</Ship_To_Address_1>
       <Ship_To_Address_2/>
       <Ship_To_City>Swampscott</Ship_To_City>
       <Ship_To_State>MA</Ship_To_State>
       <Ship_To_Zip>1907</Ship_To_Zip>
       <Ship_Method>GRND</Ship_Method>
       <Product_ID>1151010A</Product_ID>
       <Sold_For>N/A</Sold_For>
       <Our_Cost>65</Our_Cost>
       <Qty>1</Qty>
       <Description>Wilson Hyper Hammer 5.3 MP Tennis Racquet</Description>
       <Carrier_Requested>BEST</Carrier_Requested>
       <Shipping_Cost>0</Shipping_Cost>
       <Gift_Message/>
   </Orders>
</Orders_Dataset>

Now I would like to get:
<Orders_DataSet>
   <Customers>
      <!--Customer Info From Above to go here-->
   </Customers>
   <Orders>
      <!--Order Info From Above to go here-->
   </Orders>
   <OrderDetails>
      <!--OrderDetails Info From Above to go here-->
   </OrderDetails>
</Orders_DataSet>

In my source file each line is a line item in an order, problem one being that an order may have one to infinite number of lines. How do I use the Order Number to group them together. Also how do I make relatioships between the Customer and Order, and then Order to OrderDetail?

--
*Brandon Schenz*
Midwest Sports Supply
Phone: 513-956-4900
Fax: 513-956-4910
E-mail: brandons(_at_)midwestsports(_dot_)com