Here's a proposed requirement for data exchange, brought home by one of Leigh's examples:
<RQT> It should be possible from the data itself, perhaps together with external resources to which it refers, for software to determine whether the order matters for any collection of tags in the data.</RQT>
One answer is "order always matters". That would be regrettable. For example, being able to detect that some list is unordered can make it easier to know whether two data streams represent the same object. (That's probably a deeper desideratum.)
I am sure this question is addressed in most existing formats; I'm only arguing it needs to be memorialized as a requirement. I emphasize "for software to determine". I don't admit the case in which "it's in the spec" is offered as the answer to this question, unless the spec is something formal, accessible, and the question can be answered algorithmically from it. (This is an argument for making specs be in the same syntax as data, but that's a solution, not a requirement. It's also an argument why all languages but Lisp are pointless, but I bet I won't get much sympathy for that position here... :-) ).
BTW, Leigh, your Subj: (XML)shearing files between programs without data loss ^^^^^^^^
I wonder: <rhetorical> an intended pun or just a typo? </rhetorical>
Bob Morris