EDI
Carl Hage
carl at chage.com
Sat Jul 18 23:36:01 BST 1998
> From: chris m hinds <chris.m.hinds at mail.sprint.com>
> ...In this article, it suggests that XML was
> "concocted somewhat as a replacement for EDI." Is this true?
[Oops. Sorry, this email ended up being a long manifesto. Note- there's some
comments below related specifically to what's important about XML and what's
needed in XSC.]
The act of exchanging XML files is EDI by definition, according to the
original grandiose acronym and project definition. EDI is essentially thing
to solve the identical problem as XML, though the focus is business
transactions. Put some people use the horrid X12 format to try and exchange
documents, i.e. what SGML tries to do.
What is typically meant by "EDI" is the X12/EDIFACT set of "standards" and
proprietary networks used to transmit these protocols. (EDIFACT is the
internationalized version of X12). X12 has 2 parts:
1. A record formatting standard
2. Definitions for data elements, i.e. a DTD of sorts
In my opinion X12 has severe problems that have limited it's usefulness to
only a small number of large corporations (or small companies trying to do
business with a giant).
One problem is the record formatting structure-- a punch-card era structure
that is unimaginable to a modern C/Java programmer. Instead of simple
parsers, $2-10K software packages are required. It's based on fixed length
fields, and fixed nesting structures-- completely the opposite of xml.
Normally, companies need to hire EDI consultants to help untangle the mess.
XML can be used as a record format to escape from the limitations and
complexity of the X12 method of packaging data elements. It's not difficult
to convert a parsed X12 message into xml. However, it's very useful to
untangle the X12 structure. For example, instead of one data element like,
<phone>, X12 might use 2-5 elements-- extra elements are used for qualifiers,
if the fixed lengths are exceeded, or for repeated values. A good X12-XML
translator would do more that a simplistic mapping of raw X12 elements.
The other problem with X12 is that the equivalent of the DTD isn't really a
"standard", it's more like a vague suggestion. Potentially XML/SGML could
have the same problem if one writes a DTD without documentation. Each company
interpret's the specification in thier own way. Instead of having a
paragraph to precisely define the semantics and syntax, there's typically a
few words. The result is that to implement EDI, you typically hire an EDI
consultant who uses specialized data conversion software to translate the
formatting conventions used by each trading partner into a useful form. In
other words, instead of having everyone exchange data formatted according to
a precisely defined standard, you write a translator for each trading
partner. Thus the setup time for adding a new customer/vendor is measured in
months-- almost useless for internet commerce.
I think XML and in particular XSC can potentially solve this problem. I've
been overloaded and haven't had time to comment, before, but I'd like to
offer some suggestions that I think are important.
There seems to be lots of hype on data formatting, as if the main problem to
be solved is parsing records into data elements. From my experience in
exchanging data, a competent perl hacker can easily encode or decode most
record formats. The top 2 problems are:
1. The fields (elements) are undefined or vague.
2. The code values for enumerated types are inaccessable and/or undocumented.
I routinely deal with databases where the maintainers of the data have no
idea what certain fields mean. The usual way to find definitions is to look
at data values and figure out how it's used.
The other big problem is that in many cases the enumerated types are
undefined. There may be a vague reference, or sometimes you need to order an
expensive paper document from Switzerland.
XML has a serious problem (inherited from SGML) in that the DTD has syntax
only, and does not have a means (other than little used comments) to define
semantics. Dealing with the syntax of data records is insignificant and
trivial in comparison to dealing with the semantics.
The most important part of XSC is the ability to add the documentation
sections to the DTD elements. The biggest need is simple access to precise
definitions of data elements. That's something that XSC can do that cannot
be done with SGML. I will make some suggestions for the XSC spec in this
area in other emails.
Another crucial part is the ability to make external references to code
values and thier documentation. Very often element values reference a
separate standard or some implied standard, and are otherwise undocumented.
For example, the Spatial Data Transfer Standard is broken. The coordinate
coding system is defined using an enumerated value, and in the case of
state-plane, it references a paper-based NIST standard which has been
withdrawn, with the mailing address of NIST given as the reference. I'm sure
there are data files floating around somewhere on the net, but it's very
difficult to find. If there were an XSC for STDS, it's crucial that
enumerated external types reference network accessable definitions.
Take "city, state, zip" (zip=US postal code). It's easy to find a list of
states, and if there were an external XML reference, then a general purpose
XML parser/checker could validate a <state> element. However, the USGS,
Census, USPS, and NIST databases of city names all disagree slightly. The
NIST database is the best one, and I sent back a page full of errors just for
the city names in California. USPS changes zip codes regularly, without
publically accessable definitions. (They sell copyrighted databases to junk
mailers. You download more data in graphics off thier website to find out you
need to buy a lesser amount of data which you may not be able to make
public.) Zip changes of course, invalidate Census, USGS, and NIST databases,
as well as lots of others that reference city or zip codes. With the contents
of distributed databases linked by the net, it's crucial to link definitions
and documentation. XSC provides that.
One interesting aspect is that X12 is designed for mainframe-mainframe
communication only, i.e. the message formats are undecodable except by
experts (looks just like modem noise.) However, most messages are either
prepared and/or processed manually, e.g. an EDI translator is used just to
format a message or print a message. Under the EDI model there is no
possibility of human-machine interaction-- you either fax paper documents and
retype or use fully automated coded messaging. There's no concept like an
ordinary email message that's both human and machine readable.
The X12 structure was developed for use with networks which charged by the KB,
e.g. a company might pay $12K/yr for less data than $6/mo email service.
Though xml or a pretty-printed format (e.g. like RFC822 headers) is larger
than X12 coding, when xml is compressed with gzip, it's probably smaller.
--------------------------------------------------------------------------
Carl Hage C. Hage Associates
<mailto:carl at chage.com> Voice/Fax: 1-408-244-8410 1180 Reed Ave #51
<http://www.chage.com/chage/> Sunnyvale, CA 94086
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list