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
