Enhancements and Alternatives
I have tried to be fairly thorough in supporting the minimum syntax requirements for version 004010 of X12. As I've noted elsewhere in the chapter, we can certainly enhance these utilities by supporting other versions of X12 and other EDI standards such as UN/EDIFACT. In addition to these important enhancements, there are a few other major features we should consider for Babel Blaster requirements.
For our various logging functions, log entries to a data store rather than displaying the output to the current system output.
This is related to auditing support. We generate Functional Acknowledgments for trading partners but don't tie those we have received from them to data we sent.
Handling multiple interchanges:
The X12ToXML utility depends on having only one valid interchange in the input file. However, it is common when connecting to value-added networks to receive one transmission that may contain several interchanges.
The X12 and UN/EDIFACT standards provide ways to convey binary data (usually encoded in hexadecimal or a similar format) in a data element. The most common uses are for including images or foreign data content in an EDI document. For minimal support we need to be able to extract binary data from an EDI document that we received and insert it into one that we wish to send. We may or may not want to put binary data directly into the XML representation of our EDI documents. If our source document is in an EDI format, the decision of whether or not to remove the binary data depends on how most business applications would handle the data, that is, as part of the document or as a separate file. For EDI documents as the target, we could retrieve the binary data from a separate file when we create the EDI by using a file pointer rather than explicitly including the data in the source XML document. If binary data is included in the XML document, the schema language hexBinary and base64Binary data types offer us two choices for suitably encoded binary data.
We might also want to remove some of the minor restrictions noted for each of the utilities. For example, we might want the X12ToXML utility to correctly process an interchange that has two functional groups of the same type.