XML, eXtensible Markup Language, is very simple. Simple in the sense of any branch of mathematics that begins with "elementary", simple as in low-level, simple as in fundamental. The rules of XML are very loose because it encompasses virtually anything. The XHTML we build webpages in is an XML language. The data which ASP.NET passes around internally when working with databases is an XML language. iTunes library listings are an XML language. It's a language family of which all these languages are a part. Moreover, it's completely possible to create your own custom languages. You just have to create the definition (.xsd) files to go along with it. XSD, XML Schema Definition, allows an XML processor to understand what is legal in your language and what is not. So XML is less a language than a set of rules that will let you build markup languages, and XSD is the "language" you define it in. There are many such languages created by people already which are in wide use.
Besides creating new markup languages, XML is very useful for storing data. While databases are frequently faster at storing and retrieving information, XML can be written into almost any language (see above) and therefore it can be easily rewritten into a completely different markup language... enter XSL, eXtensible Stylesheet Language. XSL started as a simple styling language similar to CSS, however with the addition of a new component called XSLT, XSL Transforms, everything changed. XSLT lets you change XML from one form to another, even from one markup language into another. Together, this lets data in Any form in one location, be moved to a different location and transformed into Any other form. You can therefore understand why XML and XSLT quickly became the languages for communicating data across the internet. Company #1 would store and use data in XML that serves what they do best. They can then use XSLT to draw whatever relevant information out of the XML for another company and transmit it to them. The other company can use XSLT to transform the XML into whatever XML language they use, and the information has been successfully communicated from one company to another even though they store their data in completely different XML languages. Nice. This is why XML functionality is being built or grafted onto virtually every database system in existance. The best practices and research gurus are in the process of hammering out a hybrid system that should reasonably incorporate the speed of a database by using db storage and retrieval technology while shifting all database communications into XML to take advantage of this incredible flexibility.