There is actually only superficial similarity between XML and HTML, both are grandchildren of SGML. HTML is a very simple, static (ie predefined) mark-up language which focuses entirely upon structural format. Hence we have h1 for a heading , br for line break, p for new paragraph etc. These define the layout of the page and bare little or no relation to the content of that page. There is no way to distinguish how a name or date is displayed, apart from manually marking up each and every occurrence with html. This is probably not a problem for the average html author building their personal web site, but when it comes to publishing a ton of data from a database to the web, the task becomes nightmarish. Cascading style sheets have helped somewhat to ease the bind, but they really only enable greater control over the structural format of individual elements thru the class and id attributes. Here we are still confined to marking up content according to it's location within the document, rather than the type of data it is. This is an incredibly inefficient way to publish data to the web, because when people are looking for information, they are interested in its content, not it's format.
Enter XML ... now we can define our own tags, tags which refer to the type of information we have, eg author, date, address, etc. The advantages are obvious, these tags could be the names of the fields in a database, for instance. Mark-up can be applied to content according to its' type, rather than its' where-abouts in a sea of html tags. Of course, before it can be rendered as an attractive web page in your favorite browser, the XML has to be translated into HTML, and this is where PHP comes into play. For more on that story, check out Justin Grants excellent article at http://www.phpbuilder.com/columns/justin20000428.php3