<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">
    <xsl:for-each select="node">
      <xsl:for-each select="node">
        <li>
          <xsl:attribute name="class">left</xsl:attribute>
          <a>
            <xsl:attribute name="href">
              <xsl:for-each select="link/a">
                <xsl:value-of select="@href"/>
              </xsl:for-each>
            </xsl:attribute>
            <xsl:value-of select="link"/>
          </a>
          <xsl:if test="/node">
            <ul>
              <xsl:attribute name="class">level2</xsl:attribute>
              <xsl:for-each select="node">
                <li>
                  <a>
                    <xsl:attribute name="href">
                      <xsl:for-each select="link/a">
                        <xsl:value-of select="@href"/>
                      </xsl:for-each>
                    </xsl:attribute>
                    <xsl:value-of select="link"/>
                  </a>
                  <xsl:if test="/node">
                    <ul>
                      <xsl:attribute name="class">level3</xsl:attribute>
                      <xsl:for-each select="node">
                        <li>
                          <a>
                            <xsl:attribute name="href">
                              <xsl:for-each select="link/a">
                                <xsl:value-of select="@href"/>
                              </xsl:for-each>
                            </xsl:attribute>
                            <xsl:value-of select="link"/>
                          </a>
                        </li>
                      </xsl:for-each>
                    </ul>
                  </xsl:if>
                </li>
              </xsl:for-each>
            </ul>
          </xsl:if>
        </li>
      </xsl:for-each>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>