Warning: This blog entry was written two or more years ago. Therefore, it may contain broken links, out-dated or misleading content, or information that is just plain wrong. Please read on with caution.
As there is so much going on in the previous code I have broken it down by the key components. I have done this by working inwards by tag pair.
XSL Declaration & Stylesheet Wrapper
The first components of our xsl sheet are the xsl version namespace declarations and the desired output format of html using utf-8 encoding.
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
Inside the stylesheet wrapper we have a template wrapper
Inside the template wrapper are two variable declarations. These variables named upper and lower will be used further down the code.
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
You will notice that there is standard html mixed in with the xsl code. This is no different to the way you have standard code mixed in with cfml.
This is where we start to see the power of xsl. This statement selects the urlset wrapper from our sitemap and loops through each url node in it.