XSD gets thumbs up from me.
Generate useful docs. Easy to read to get a handle on data structure. Also can be used as runtime contracts. somewhat similar but v. limited compared to Racket Contracts and Clojure spec.
Not to mention super tooling for interacting with schema (like XMLSpy)
In conclusion, having schemas for data structures(especially at boundaries) is absolutely necessary to maintain control & visibility over data.