<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.1"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="http://www.w3.org/TR/REC-html40">


  <xsl:output
              method="html"
              encoding="utf-8"
              saxon:character-representation="native;decimal"
              xmlns:saxon="http://icl.com/saxon"
              indent="yes"
              doctype-public="-//W3C//DTD XHTML 1.0 Transitional"/>


  <!--top-level template -->
  <xsl:template match="/">
    <html>
      <head>
        <!--link rel="stylesheet" href="/main.css"/-->
        <title><xsl:value-of select="xbel/title" /></title>
      </head>
      <body>
        <table width="100%" cellpadding="10" cellspacing="10">
          <xsl:for-each select="xbel/folder">
            <xsl:sort select="title" /><xsl:call-template name="folder"/>
          </xsl:for-each>
        </table>
        <br/>
        <dl>
          <xsl:for-each select="xbel/bookmark">
            <xsl:sort select="title" /><xsl:call-template name="bookmark"/>
          </xsl:for-each>
        </dl>
      </body>
    </html>
  </xsl:template>


  <!--folder template -->
  <xsl:template name="folder" >

    <!-- write lower level files-->
    <xsl:document href="{generate-id()}.html">
      <html>
        <head>
          <title><xsl:value-of select="title" /></title>
          <!--link rel="stylesheet" href="bookmarks.css"/-->
        </head>
        <body>
          <xsl:if test="folder">
            <table width="100%" cellpadding="10" cellspacing="10">
              <xsl:for-each select = "folder">
                <xsl:sort select="title"  />
                <xsl:call-template name="folder"/>
              </xsl:for-each>
            </table>
            <br/>
          </xsl:if>
          <dl>
            <xsl:if test="bookmark">
              <xsl:for-each select = "bookmark">
                <xsl:sort select="title"  />
                <xsl:call-template name="bookmark"/>
              </xsl:for-each>
            </xsl:if>
          </dl>
        </body>
      </html>
    </xsl:document>


    <!--The actual output-->
    <!--process even entries-->
    <xsl:if test="position() mod 2 = 0">
      <td align="center">
        <xsl:attribute name="id">
          <xsl:value-of select="position()" />
        </xsl:attribute>
        <big>
          <a href="{generate-id()}.html"><xsl:value-of select="title"/></a>
        </big>
        <xsl:text> </xsl:text>
        <br/>
        <i><small>
            <xsl:for-each select = "folder">
              <a href="{generate-id()}.html"><xsl:value-of select="title"/></a>
              <xsl:text> </xsl:text>
            </xsl:for-each>
            <p><xsl:value-of select="desc"/></p>
          </small></i>
      </td>
      <tr/>
    </xsl:if>


    <!--process odd entries-->
    <xsl:if test="position() mod 2 = 1">
      <td align="center">
        <xsl:attribute name="id">
          <xsl:value-of select="position()" />
        </xsl:attribute>
        <big>
          <a href="{generate-id()}.html"><xsl:value-of select="title"/></a>
        </big>
        <xsl:text> </xsl:text>
        <br/>
        <i><small>
            <xsl:for-each select = "folder">
              <a href="{generate-id()}.html"><xsl:value-of select="title"/></a>
              <xsl:text> </xsl:text>
            </xsl:for-each>
            <p><xsl:value-of select="desc"/></p>
          </small></i>
      </td>
    </xsl:if>
  </xsl:template>


  <!--bookmark template -->
  <xsl:template name="bookmark">
    <dt>
      <a>
        <xsl:attribute name="href">
          <xsl:value-of select="@href" />
        </xsl:attribute>
        <xsl:attribute name="visited">
          <xsl:value-of select="@visited" />
        </xsl:attribute>
        <xsl:attribute name="modified">
          <xsl:value-of select="@modified" />
        </xsl:attribute>
        <xsl:value-of select="title" />
      </a>
    </dt>
    <dd><small>
        <xsl:value-of select="desc" />
      </small></dd>
  </xsl:template>


</xsl:stylesheet>
