Allen Holub (Author of Compiler Design in C and famous OO Guru) said: "XML is perhaps the worst programming language ever conceived. I’m not talking about XML as a data-description language, which was its original design. I’m talking about perverting XML for programming applications. It’s inappropriate to use XML as a scripting language (e.g., ANT), a test-description language (e.g., TestNG), an object-relational mapping language (e.g., Hibernate, JDO), a control-flow language (e.g., JSF), and so forth. These sorts of XML “programs” are unreadable, unmaintainable, an order of magnitude larger than necessary, and audaciously inefficient at runtime." Link

He surmised that the tendency to use xml for these tasks is simply because people either don't want to create a compiler or are inacapable of creating one. I agree with him. Most of the time people use XML because it is easy to parse XML, so who cares how long it takes for people to create these xml documents in the first place. Look at Hibernate for an example. It is XML hell. EJB 2 was another example. Jelly was probably the worst example and I don't like JSTL that much either.

Then he goes on to define the basic qualifications of a programmer, he said something which is close to my heart:
"This list includes a deep understanding of data structures and key algorithms, a little math (set theory, logic, a little statistics), mastery of analysis-and-design techniques, both process (e.g., RUP or XP) and structure (e.g., design patterns), and database structure and use (e.g., SQL). You also need to know how the hardware works."

Designing compilers is hard. Today it is rare to see people designing compilers for their software. They use XML or simple property files. Also, as he mentioned, it is hard to get books on compiler design. The best Java software to design compiler is JavaCC, which was by an ex-Sun employee, who later went on to found MetaMata in the dotcom boom era.

He misses one vital point. Somewhere down the road it has unfortunately become a marketing bullet point to mention that your software uses XML for configuration.