Translating XML documents to EDIFACT

Once an XML document is created that contains the proper content to fill an EDIFACT structure, the adapter will do the syntactical translating for you. But how do you get the XML data to look right?

Using the same steps as in Converting EDIFACT to XML, we're going to load an EDIFACT document into the editor, change it, and save it back out — and we'll watch the change occur. This will demonstrate an XML document turning back into EDIFACT.

Then we'll see how we can do this automatically as part of an XSLT transformation.

Here are the steps for this demonstration:

  1. Open the EDIFACT document in the XML editor
  2. Change XML EDIFACT
  3. Save XML document in EDIFACT format
  4. See changed EDIFACT
  5. Use EDIFACT document as output of XSLT

Open the EDIFACT document in the XML editor

Perform the following steps:

  • File|Open
  • Choose your file — for example edifact-sample.txt
  • Put a check in the "Convert to XML using adapter" checkbox
  • Click the Open button
  • Choose the "Electronic Data Interchange (EDI)" Adapter
  • Click the OK button

Change XML EDIFACT

Let's change the recipient from DATADIRECT to SAXONICA.

Before:

<UNB03>
  <UNB0301><!--0010: Interchange recipient identification-->DATADIRECT</UNB0301>
  <UNB0302><!--0007: Identification code qualifier-->1<!--DUNS (Data Universal Numbering System)--></UNB0302>
</UNB03>

After:

<UNB03>
  <UNB0301><!--0010: Interchange recipient identification-->SAXONICA</UNB0301>
  <UNB0302><!--0007: Identification code qualifier-->1<!--DUNS (Data Universal Numbering System)--></UNB0302>
</UNB03>

Save XML document in EDIFACT format

Do File|Save As and choose a new filename; make sure that the "Convert from XML using adapter" checkbox is checked and keep the same EDI adapter chosen.

See changed EDIFACT

Comparing the two files shows that you just changed an EDIFACT document without an EDIFACT editor, or even seeing the EDIFACT file itself!

Use EDIFACT document as output of XSLT

We could automate this, and take the input document, change it with XSLT or XQuery, and save it as a new EDIFACT document with our change. Here are the steps:

  1. Use the XSLT code edifact-change.xsl below
  2. Set your input document to be the edifact-sample.txt file, as passed through the EDI adapter
  3. Set your output document to be after.edi, also passing through the EDI adapter
  4. Run the stylesheet
<xsl:stylesheet version="1.0">
    <
xsl:template match="/">
        <
xsl:apply-templates select="node()"/>
    </
xsl:template>
    <
xsl:template match="UNB0301">
        <
xsl:element name="{local-name(.)}">
            <
xsl:text>SAXONICA</xsl:text>
        </
xsl:element>
    </
xsl:template>
    <
xsl:template match="node()">
        <
xsl:choose>
            <
xsl:when test="local-name(.) = '#text'">
                <
xsl:value-of select="."/>
            </
xsl:when>
            <
xsl:when test="local-name(.) = '#comment'"/>
            <
xsl:otherwise>
                <
xsl:element name="{local-name(.)}">
                    <
xsl:apply-templates select="node()"/>
                </
xsl:element>
            </
xsl:otherwise>
        </
xsl:choose>
    </
xsl:template>
</
xsl:stylesheet>

What this does is the same thing we just did, but mechanically. It finds the UNB0301 segment and replaces whatever content text was there with the string SAXONICA. It also filters out any comments (but we could pass them along by replacing the line

    <xsl:when test="local-name(.) = '#comment'"/>
with the lines
    <xsl:when test="local-name(.) = '#comment'">
        <
xsl:comment>
            <
xsl:value-of select="."/>
        </
xsl:comment>
    </
xsl:when>
but we don't really need them.)


The EDIFACT can be generated completely from XSLTor XQuery, and schemas can be generated against which to map and validate your EDIFACT XML.

The adapters can be used in other contexts as well. They may be built right in to your own applications, using either the data conversion API or as part of your file handling or XSLT/XQuery processing through the deployment adapters.

XML Videos

Stylus Studio online XML video demonstrations illustrate how easy it is to learn advanced XML editing techniques. Now playing: Java Code Generation, Convert to XML, Grid View, and many other informative video demonstrations.

Internet & eBusiness

Internet & eBusiness

Mail, Package & Freight Delivery

Want to know what mail, package & freight delivery companies are shipping away there XML woes? Now you can! Check out these top mail, package & freight delivery companies that are packaged with the power of Stylus Studio.

Accessing Relational Databases as XML with Stylus Studio's File Explorer

This demonstration is the first part of our series on working with relational and XML data, covering how to use Stylus Studio's File Explorer to connect to and query relational database tables as XML.

Stylus Most Wanted

PURCHASE STYLUS STUDIO ONLINE TODAY!!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Try Stylus EDI Tools

Simplify working with Electronic Data Interchange (EDI) with Stylus Studio®'s award-winning EDI Tools — Download a free trial of our today!

Learn XQuery in 10 Minutes!

Say goodbye to 10-minute abs, and say Hello to "Learn XQuery in Ten Minutes!", the world's fastest and easiest XQuery primer, now available for free!

Why Pay More for XML Tools?

With Stylus Studio® 2008 XML Enterprise Suite, you get the most comprehensive XML tool suite at one incredibly low price. Value: it's just one of many reasons why smart XML developers are choosing Stylus Studio!

Stylus Studio® EDIFACT Zone

Simplify your next legacy data integration project with the help of the EDIFACT Zone, the world's largest, free online reference covering all EDIFACT and UN/CEFACT versions.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.