XML

I am very partial to using XML as a storage format for almost anything. Why? Two words: Open Data.

I have once had the unhappy task of manipulating Microsoft Word documents in code. That experience taught me to shun Word forever. The data is coded using such a complex schema, and so error-prone... Your text, caught within a Word document, is not yours anymore, as you cannot read it without Redmont's help. (And sometimes not even then!)

An XML document is larger, of course, but that's why we have streamed data compression algorithms, right? But in principle, it will always be possible to read it, to translate from one data format to another. You cannot lose access to XML data. OK, that's an over-simplification: Some XML formats can be as closed as a binary file format. But in most cases it stands.

Also, XML makes it convenient to analyze your data, thanks to the plethora of high-level tools and standards that have evolved around it: SAX, DOM, XPath, XSLT, XQuery, XUpdate, XML-RPC, etc.

XSLT, in particular, guarantees that XML data formats can always be inter-convertible, no matter what.

Finally, here is a small syllogism, courtesy of playing with XML-RPC:

Nowadays, all data is expressed as objects;

Thanks to object serialization, all objects can be expressed as XML;

Hence all data is (potentially...) XML.

Add the fact that all XML formats are equivalent if you are willing to do some XSLT; so all data can be made inter-operable. Thank you XML!