Looking at questions like http://stackoverflow.com/questions/77726/xml-or-sqlite-when-to-drop-xml-for-a-database and http://stackoverflow.com/questions/44207/what-are-good-alternative-data-formats-to-xml it is clear that XML is something you best use for exchanging data between systems, organizations, and software programs. For internal use, other formats tend to more compact and scalable, like home-made plain-text formats, regular source code, or using a database.
Once the time comes to move data out to some other program/tool/system/organization in XML: where and how do you define the data format encapsulated in the XML file? It is clear that you need strict rules for what goes where, and then meaning of all nodes in the tree. XML is not self-documenting, that much seems clear.
Do you use somebody else's design, or roll your own? Is there some good guide to how to do the document designs?
/jakob