To me EXI is great. Exactly because it is a standard binary representation of 
exactly the XML Infoset.


EXI can do any XML document.


EXI can be used even without an XML schema for the data, but with a schema can  
achieve higher density representation.


DFDL can't do any XML. Lots of features of XML are missing e.g., attributes, 
some types, etc. DFDL as a schema language doesn't have many features of XSD - 
no substitution groups, no All groups, no gYear type, etc. This limits the kind 
of XML documents it can describe.


EXI is guaranteed to make a non-trivial-sized XML smaller.  It will even factor 
out redundant things like repeating element names, by creating symbol tables.


DFDL is usually going to make the data smaller, but that's a function of 
whether the representation is dense binary, or has initiators/terminators 
(i.e., tags) etc. A format with tags in it will commonly repeat those tags 
endlessly, just like XML (text) does.


DFDL is not about XML as much as non-XML data. If you have a choice to use XML 
data, I would say use it, and if it's too inefficient I would consider EXI 
before sliding all the way down the slippery slope to using DFDL and defining 
my own binary format.


The Daffodil project even has a JIRA ticket for creating an EXI infoset 
outputter so that the infoset would arrive from the DFDL parser directly as EXI 
instead of having to go through XML text as a representation. (And the inverse 
for unparsing.)

https://issues.apache.org/jira/browse/DAFFODIL-1959



________________________________
From: Costello, Roger L. <[email protected]>
Sent: Tuesday, February 26, 2019 1:47:03 PM
To: [email protected]
Subject: DFDL versus Efficient XML Interchange (EXI)

Hello DFDL community,

An EXI tool can encode XML to the binary EXI format, e.g.,

Book.xml --> EXI tool --> Book.exi

Daffodil can unparse XML to generate binary, e.g.,

Book.xml --> Daffodil --> Book.binary

An EXI tool can decode a binary EXI file to XML, e.g.,

Book.exi --> EXI tool --> Book.xml

Daffodil can parse binary to generate XML, e.g.,

Book.binary --> Daffodil --> Book.xml

Daffodil can do everything that an EXI tool can do. Plus, Daffodil can do much, 
much more.

Conclusion: EXI is redundant and is no longer needed.

Do I have any errors in my argument? Do you agree with my conclusion?

/Roger

Reply via email to