Understanding XML


In The Right SOAP, Daniel F. Savarese says:

Whether you like it or not, Web services are here to stay. The fog has lifted and the structure of Web services has been revealed: XML in, XML out. Not very complicated. So why are so many programmers having a hard time getting their arms around Web services?

Having taught over 130 students an enteprise computing course over the last three years, and having had quite a bit of experience using XML in large projects, I can think of a few reasons:

  • Most of the computing literature on XML, SOAP, and web services in general fails to relate these technologies back to standard CS theory that any computer scientist should know (more on this in a minute).
  • The writings on these technologies is full of hype and consequently makes them seem more complicated than they are.
  • Most programmers aren't familiar with RPC or messaging to any great extent and so generalizations of these techniques are even more obtuse. 

When I ask my students what they know about XML, I get parroted hype from some and honest admissions of confusion from the others.  I find that I can generally clear both up with a few simple statements:

  • XML is a way of describing context free grammers.
  • A DTD is a BNF for a particular grammer.
  • XML parsers are interpreted versions of LEX/YACC. 
  • Use XML and technologies based on it when you can justify the parsing and rendering cost of the more general representation that XML buys you.

These statements allow anyone with a little CS theory to separate fact from hype and make some pretty good decisions about where to deploy XML based technologies.