Thanks for the thorough explanation. What you say makes complete sense to me - you started with XML, so it's going to be the more mature and encumbered of the formats.
I am not a big fan of XML in general, but in this instance it has won out as my format of choice for some very specific reasons:
- Schema validation - when creating the database changelogs, many IDE's will provide code assistance and validation per the XSD's. IIRC neither YAML or JSON have a schema specification.
- While the YAML markup is better suited as a DSL, I use IntelliJ, and it doesn't support the Language Injection feature for YAML - which I find incredibly valuable when dealing embedded SQL (createView, createProcedure, etc).
- The JSON format is just too verbose for me - requiring the repeated "column" tag when the JSON itself handle arrays of values is troublesome.
- Most damning for JSON is its lack of multiline support.
- The Formatted SQL doesn't have the auto-rollback functionality.
This all came to the fore because at this point I've cycled through changelogs in every one of the four formats, I started with JSON, found its rough edges and moved to YAML, and got bit by invalid syntax and realized the superior format, for now, is XML - however I can see a need to move back to YAML at some point in the future, and having the ability to translate back and forth would really help me do that.