Main Points

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.

Beginning XSLT Programming

You'll note that these dates are from a long time ago, yet the first posting date for each of these pages is from 2009. They were originally built as a side project in 2007, and while we had them as highly abbreviated barely navigable webpages it was only in 2009 that we whipped them into shape for publication. You can blame the master pages for being higher priority and delaying the publishing for so long; the date of RawXml07 is 2007/12/31, the date on MasterPage01... 2008/01/06.

  1. RawXml01DisplayingRawXml.aspx - This page accesses the raw XML data with the XML server control and displays it in a webform.

    [chroniclemaster1, 2007/10/06]

  2. RawXml02DisplayOneElementWithXslt.aspx - This page uses XSLT to grab and display only one element from the XML file, the book title.

    [chroniclemaster1, 2007/11/02]

  3. RawXml03DisplaySeriesTitles.aspx - This page works out a number of issues with retrieving and manipulating books in series.

    [chroniclemaster1, 2007/11/02]

  4. RawXml04SortedTitleAndSeries.aspx - This page revamped the XML file more sensibly so we could sort series and individual books alphabetically.

    [chroniclemaster1, 2007/11/03]

  5. RawXml05AnnotatedBibliography.aspx - This page attempts to recreate the original annotated bibliography by using the XML and XSLT files instead of hard coding everything in XHTML.

    [chroniclemaster1, 2007/11/06]

  6. RawXml06IgnoringInitialAAnThe.aspx - This page attempts to ignore initial A, An and The when sorting based on title.

    [chroniclemaster1, 2007/11/14]

  7. RawXml07FineTuningAuthors.aspx - This page attempts to sort out a number of minor issues, especially for following bibliographic rules about ordering authors and their books.

    [chroniclemaster1, 2007/12/31]