Subject:Converting from Edifact to SQL (Map via XML) Author:Jon Roberts Date:23 Feb 2008 12:09 PM
We are trying to read Edifact EDI messages into our in-house application (written in VB.NET / Visual Studio 2005 / MS SQL 2005). I have an EDI data file, which I can read and convert to XML. However, when I read that XML file into our app (using DataSet.ReadXml) it creates a dataset containing some 58 tables. I can see the table names relate to the EDIFACT elements, but due to the EDI structure (these are DESADV) not all tables contain the same number of rows. For exanple, an Item Number (in GIR) may have two weights (Net & Gross). These are both QTY elements, so the QTY table has up to twice as many entries as the GIR table. How do I relate all these back to get one row per item number?
Maybe I'm coming from the wrong angle, so I tried using XQuery and Mapping the EDI source file to try and create a simple XML file (the goal is to import into a SQL table). I created an XML schema for a table (called Manifest) and - for testing - simply mapped a single field from the source XML file to this schema. This created the XQUERY below:
<a:ds_Stocks>
<a:Manifest>
<a:Item_No>
{/EDIFACT/DESADV/GROUP_10/GROUP_11/GROUP_13/GIR/GIR02/GIR0201/text()}
</a:Item_No>
</a:Manifest>
</a:ds_Stocks>
I can run this, but the output file just contains one 'record' that contains a concatenated version of all Item Codes in the source file.
I'm still trying to get my head around all this & have spend quite a while in the documentation, but am struggling somewhat. Any suggestion on how I should be approaching this? I'd really appreciate any help on offer.
Subject:Converting from Edifact to SQL (Map via XML) Author:Tony Lavinio Date:24 Feb 2008 10:35 AM
You need to tell the XQuery that you want a set of elements.
By drawing a single line from a non-repeating element, you
just invoked a 'copy'.
Somewhere above the element should be another element with
a repeating element icon (it splits from one to three blocks,
instead of having a single block on top and bottom). Draw a
line from that to a corresponding element in the schema that
also has the repeating property, and you should see a little
'FLWOR' block (with a flower on it) appear on the canvas.
Or, if you want, post a copy of the input file and output
schema, and we'll give you a hand. (Or email them to
stylus-field-report@progress.com)