Efficient XML Interchange (EXI) Format WD Released
Elliotte Rusty Harold on EXI, the Efficient XML Interchange (EXI) Format:
Whatever the EXI format is, it’s not XML and using the name “XML” to describe it an attempt by people who want something very different from XML to trade on XML’s good name. If EXI were really a good idea, it could succeed on its own merits without pretending to be something it’s not. I guess the working group members don’t really believe in it though.
I agree that it’s not XML, but it’s interesting to me. EXI is for streaming Infosets — the data model XML is a representation of — with (hopefully) much less parsing overhead. I haven’t looked at EXI until now, but I wouldn’t write it off too quickly. One thing I did notice was the 2 different grammar systems. One is just XML-based and it “evolves” as namespaces and prefixes occur. The other is “schema-informed”, which means the stream has some schema information (XSD, RELAX, etc.) encoded and the grammar stays static. Could be nice.
The argument against binary XML has long been that it’s easy to create a better “serialization” than text for XML for any particular purpose - but not for the general case. I admit to not having looked at EXI in detail, but it still seems hard to be to imagine how, for example, a general mechanism can meet different optimization goals, such as bandwidth vs. processing time.
XML is not a representation of any data model, infoset included. That’s a strength and one that EXI is trying to do away with. It’s a big reason EXI is not merely an alternate encoding of XML.
XML is a syntax without a data model. That’s not an accident. It’s deliberate. The Infoset is only one possible data model for XML, and one that is actually not isomorphic to XML syntax. That is, there are well-formed and valid XML documents that do not have infoset representations, and infosets that do not have XML representations.
There are other data models besides the infoset. For example, XPath 1.0 defines a data model that is different from the Infoset. This is also what XSLT 1.0 uses.
Individual applications are free to define their own data model that meets their needs, and there is no rule that two processes reading the same document must use the same data model.