The quote above from Kimberley  is one of my favorite statements about EDI. Even in 1991 EDI could only be considered low-tech. Think about it: delimited file formats designed to save every last byte, summary records with record counts, unencrypted security and authorization information, slow dial-up connections, and asynchronous or bisynchronous communications and file transfer protocols such as XMODEM and 2780/3780. Then think about the complexity of making it all work together, and add to that the complexity of integrating it with business applications! Even with a growing movement toward sending EDI over the public Internet, the statement still rings true.
In contrast, although XML's first promise was for a simple way to encode data in files, with all the secondary and tertiary standards and technologies that have been built on top of it I can only characterize XML as complex high technology. So, where is the happy medium? In this chapter I'll try to cut through some of the complexity of both EDI and XML and present a workable approach to low-tech and high-tech peaceful coexistence.
I'm going to assume that you know a little about EDI already. However, in case you don't or in case you need a refresher regarding certain aspects, I'll start the chapter with a brief overview of some relevant features. I'm going to cover only the basic functionality required to convert EDI in the ANSI X12 format to and from XML. There are two important reasons for this, discussed briefly below.
One reason is that some of the functionality that lends complexity to EDI (such as sequence number generation, auditing, and acknowledgment processing) goes beyond the scope of the file format conversion that is the focus of this book. I will address the minimum of such additional functionality that is required in most implementations , but I won't go beyond that. It is more appropriate to deal with the more complex functionality in the Babel Blaster project that we'll discuss in Chapter 11.
The other reason has to do with limiting the EDI syntax supported by the utilities built in this chapter to the X12 EDI standard. Even within the X12 standard, there are subtle but important variations between the different versions of the standard that have been released over the years . I am going to focus primarily on version 004010 since it is most commonly implemented now due to Y2K upgrades. Beyond X12, there are certainly other important EDI standards, not the least of which is UN/EDIFACT. (The full name , rarely used, is United Nations Electronic Data Interchange for Administration, Commerce and Transport.) However, the ISO 9735 syntax (in two versions) used by UN/EDIFACT is more complex in many ways than the X12 syntax. Again, it makes sense to start with the basics and then proceed to the advanced topics. While many of the key processing routines developed in this chapter encompass functionality beyond what is required for version 004010 of the X12 standard, the executable utilities themselves will not. As with the more complex functionality, I'll discuss support for other EDI standards and other versions of X12 in Chapter 11 with the Babel Blaster project.