Hello Everyone!

So, I have to teach myself myself XML, XSL, et al., for work...  (The VB stuff is in the background for now!)  I started playing with XML yesterday, and have gotten pretty far along.  But... I have to deal with M$-generated XML files that looks like the following (I added the first two lines for display in a browser):
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="SOURCES.xsl"?>

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
 xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
 xmlns:rs='urn:schemas-microsoft-com:rowset'
 xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
 <s:ElementType name='row' content='eltOnly'>
  <s:AttributeType name='ID305B' rs:number='1' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
   <s:datatype dt:type='string' dt:maxLength='50'/>
  </s:AttributeType>

 [snip]

  <s:extends type='rs:rowbase'/>
 </s:ElementType>
</s:Schema>
<rs:data>
 <z:row ID305B='MA11002' CYCLE='2002' USE_ID='537' CAUSE_ID='226' SOURCE_ID='180' CONFIRMED='N'/>

  [~11,000 lines snipped]
So, I wrote the following SOURCES.xsl file to display this beast in a browser (it uses recursion):
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:rs='urn:schemas-microsoft-com:rowset'
  xmlns:z='#RowsetSchema' version="1.0">

<xsl:template match="/">
   <HTML>
   <BODY topmargin="0" leftmargin="0">
   <xsl:apply-templates select="/xml/rs:data"/>
   </BODY>
   </HTML>
</xsl:template>
 
<xsl:key name="rows-by-AU" match="z:row" use="@ID305B" />
<xsl:template match="z:row">
<xsl:apply-templates select="key('rows-by-AU', ID305B)" />
   <div AU_ID="{ID305B}">
      <xsl:apply-templates select="key('rows-by-AU', ID305B)" />
      <div USE_ID="{CYCLE}">    
         <div USE_ID="{USE_ID}">
            <xsl:value-of select="@ID305B"/>
            (<xsl:value-of select="@CYCLE"/>):
            <xsl:apply-templates select="key('rows-by-AU', USE_ID)"/>
            <xsl:value-of select="@USE_ID"/> -
            <xsl:value-of select="@CAUSE_ID"/> -
            <xsl:value-of select="@SOURCE_ID"/>
         </div>
      </div>
   </div>
</xsl:template>
</xsl:stylesheet>
And it works (surprised the hell out of me)!  But now I'm having the hardest time figuring out how to format this the way I'd like.  This is how it currently looks in the browser:
MA11002 (2002): 537 - 226 - 180
MA11002 (2002): 537 - 448 - 140
MA11002 (2002): 538 - 226 - 180
MA11002 (2002): 538 - 413 - 140
MA11002 (2002): 538 - 413 - 177
MA11002 (2002): 539 - 226 - 180
MA11002 (2002): 539 - 413 - 140
MA11002 (2002): 541 - 226 - 180
MA11002 (2002): 541 - 478 - 140
MA11002 (2002): 541 - 413 - 140
MA11018 (2002): 538 - 413 - 140
MA11018 (2002): 539 - 413 - 140
MA11018 (2002): 541 - 413 - 140
MA11019 (2002): 537 - 312 - 140
MA11019 (2002): 538 - 312 - 140
MA11019 (2002): 539 - 312 - 140
MA11019 (2002): 541 - 312 - 140
[... other IDs in between 2002 and 2008 ...]
MA11002 (2008): 537 - 226 - 180
MA11002 (2008): 537 - 478 - 92
MA11002 (2008): 537 - 312 - 156
[... thousands of additional IDs ...]
And I'd like the output to look something like:
MA11002 (2002): 537 - 226 - 180
                                - 448 - 140
                          538 - 226 - 180
                                - 413 - 140
                                        - 177
                          539 - 226 - 180
                                - 413 - 140
MA11002 (2008): 537 - 226 - 180
                                - 478 - 92
                                - 312 - 156
[...]
So, things would need to be grouped by ID305B and CYCLE, then by USE_ID, then by CAUSE_ID, then by SOURCE_ID. 
 
But, I'd even settle for output that looks like:
MA11002 (2002): 537 - 226 - 180
MA11002 (2002): 537 - 448 - 140
MA11002 (2002): 538 - 226 - 180
MA11002 (2002): 538 - 413 - 140
MA11002 (2002): 538 - 413 - 177
MA11002 (2002): 539 - 226 - 180
MA11002 (2002): 539 - 413 - 140
MA11002 (2002): 541 - 226 - 180
MA11002 (2002): 541 - 478 - 140
MA11002 (2002): 541 - 413 - 140

MA11002 (2008): 537 - 226 - 180
MA11002 (2008): 537 - 478 - 92
MA11002 (2008): 537 - 312 - 156
 
[... thousands of additional IDs ...]
where the IDs from the two different years are adjacent to one another...
 
I believe this will involve much pain and suffering while I try to figure out such things as XML nodes, grouping, sorting, and the like...  But, I'm hoping someone will look at this and say "boy Daukas, that's easy...  just do this, and then that, and voila - your done!".
 
Anyone?  Anyone?  ;-)
 
Thanks in advance for any help!
Steve