Maybe this is a little unrelated, but why did our industry collectively pound our fists against the table and scream until XML went away? It's a little ugly and very verbose, but it's highly expressive and it has a proper schema language.
I'm too young to know what happened or why. By the time I got my first engineering job, JSON was the standard choice for "stuff you need to serialize."
I feel like YAML has also become the default choice in several areas where XML would be flat-out better.
I hesitate to say this, but I believe at the time Web developers just weren't really developers. Attempts to bring grown-up development approaches to the Web had to fail because they pushed beyond the capabilities of most. Ironically, the longer-term result was JavaScript of great complexity, so that much of computer science has been reinvented -- but in JavaScript, and Web development has become astoundingly complicated.
Don't get me wrong, both formats have their place. I personally find neither to be terribly difficult to read or write, but maybe that's just me. Having used XSD and JSON schema, XSD is a far more complete solution that takes advantage if XML's more sophisticated syntax. I'm not sure how you'd make JSON Schema more expressive without making it hideously difficult to use.
I'm not advocating for universal XML use, nor am I advocating for universal JSON use. I'm advocating for standing back and asking yourself "what am I trying to accomplish?" then choosing the right tool for the job.
As for protobuf: I've seen entire companies built on it. It's amazing what your engineers can do when they don't spend half their time twiddling bits or arguing about data formats. It's a godsend for embedded developers (like me), because JSON, XML, et al are non-starters in that space.
The tools like XSLT and Xpath are actually very satisfying to use and astoundingly capable, especially when streaming. However, they require deeper learning than most busy Web devs may be comfortable with.
It really depends on what you are using it for. The hierarchical semantics of XML makes hierarchal data so much easier to read, write, and query than anything you are likely to come up with in json. I’d go as far to argue that the whole reason we don’t have a modern equivalent of Flash is because composability is busted because of the inadequate hierarchical semantics of json.
I'm too young to know what happened or why. By the time I got my first engineering job, JSON was the standard choice for "stuff you need to serialize."
I feel like YAML has also become the default choice in several areas where XML would be flat-out better.