I’m gunna disagree with you XML comes with validators and versioning as part of the XML spec. You can validate XML files against XSD descriptors that can be published and even referenced by the XML file.
The only downside of XML over json is that XML is verbose AF.
Strict validators, versioning, checking, and definitions is EXACTLY what you want in a storage format.
ODF is also XML. It makes sense here.
More information for you: https://en.wikipedia.org/wiki/XML_Schema_(W3C)








You have it mostly backwards. XML has like 40+ types that are all standardized. JSON only has the basic JS types. XML is a superset of JSON when it comes to types.
How would you represent a double float, or binary data, or a datatime in JSON. You would have to use strings in JSON. In XML you would use the xsd:double, xsd:binary, and xsd:dateTime.
JSON only works if you think in JavaScript. For languages with more complete / complex data systems it does not do unless you resort to the string thing.
For your information:
Easier to read: https://www.ibm.com/docs/en/jfsm/1.1.2.1?topic=queries-xsd-data-types
The official spec: https://www.w3.org/TR/xmlschema-2/
As for validation I think “right tool for the right job” is the best approach here. How do you know your validator is validating correctly? That’s the beauty of XML. Validation is part of the spec. XML is more complicated, but only because it’s more capable than json. Just like protobuf is more complicated than JSON. It’s also more complicated and not centered on JSON types.