<?xml version="1.0"?>
<!-- ***** BEGIN LICENSE BLOCK *****
   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
   -
   - The contents of this file are subject to the Mozilla Public License Version
   - 1.1 (the "License"); you may not use this file except in compliance with
   - the License. You may obtain a copy of the License at
   - http://www.mozilla.org/MPL/
   -
   - Software distributed under the License is distributed on an "AS IS" basis,
   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   - for the specific language governing rights and limitations under the
   - License.
   -
   - The Original Code is mozilla.org code.
   -
   - The Initial Developer of the Original Code is
   - Netscape Communications Corporation.
   - Portions created by the Initial Developer are Copyright (C) 2002
   - the Initial Developer. All Rights Reserved.
   -
   - Contributor(s):
   -   Jonas Sicking <sicking@bigfoot.com> (Original author)
   -
   - Alternatively, the contents of this file may be used under the terms of
   - either the GNU General Public License Version 2 or later (the "GPL"), or
   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
   - in which case the provisions of the GPL or the LGPL are applicable instead
   - of those above. If you wish to allow use of your version of this file only
   - under the terms of either the GPL or the LGPL, and not to allow others to
   - use your version of this file under the terms of the MPL, indicate your
   - decision by deleting the provisions above and replace them with the notice
   - and other provisions required by the LGPL or the GPL. If you do not delete
   - the provisions above, a recipient may use your version of this file under
   - the terms of any one of the MPL, the GPL or the LGPL.
   -
   - ***** END LICENSE BLOCK ***** -->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:output method="html"/>

  <xsl:template match="/">
    <html>
      <head>
        <link rel="stylesheet" href="resource:///res/xml/XMLPrettyPrint.css"/>
        <script><![CDATA[
function clicked(event) {
  try {
    var par = event.target.parentNode;
    if (par.nodeName == 'td' && par.className == 'expander') {
      if (par.parentNode.className == 'expander-closed') {
        par.parentNode.className = '';
        event.target.data = '-';
      }
      else {
        par.parentNode.className = 'expander-closed';
        event.target.data = '+';
      }
    }
  } catch (e) {
  }
}
        ]]></script>
      </head>
      <body onclick="clicked(event)">
        <div id="header">
          <p>
            This XML file does not appear to have any style information
            associated with it. The document tree is shown below.
          </p>
        </div>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="*">
    <div class="indent">
      <span class="markup">&lt;</span>
      <span class="elemname"><xsl:value-of select="name(.)"/></span>
      <xsl:apply-templates select="@*"/>
      <span class="markup">/&gt;</span>
    </div>
  </xsl:template>

  <xsl:template match="*[node()]">
    <div class="indent">
      <span class="markup">&lt;</span>
      <span class="elemname"><xsl:value-of select="name(.)"/></span>
      <xsl:apply-templates select="@*"/>
      <span class="markup">&gt;</span>

      <span class="text"><xsl:value-of select="."/></span>

      <span class="markup">&lt;/</span>
      <span class="elemname"><xsl:value-of select="name(.)"/></span>
      <span class="markup">&gt;</span>
    </div>
  </xsl:template>

  <xsl:template match="*[* or processing-instruction() or comment() or string-length(.) &gt; 50]">
    <table>
      <tr>
        <td class="expander">-<div/></td>
        <td>
          <span class="markup">&lt;</span>
          <span class="elemname"><xsl:value-of select="name(.)"/></span>
          <xsl:apply-templates select="@*"/>
          <span class="markup">&gt;</span>

          <div class="expander-content"><xsl:apply-templates/></div>

          <span class="markup">&lt;/</span>
          <span class="elemname"><xsl:value-of select="name(.)"/></span>
          <span class="markup">&gt;</span>
        </td>
      </tr>
    </table>
  </xsl:template>

  <xsl:template match="@*">
    <xsl:text> </xsl:text>
    <span class="attrname"><xsl:value-of select="name(.)"/></span>
    <span class="markup">="</span>
    <span class="attrvalue"><xsl:value-of select="."/></span>
    <span class="markup">"</span>
  </xsl:template>

  <xsl:template match="text()">
    <xsl:if test="normalize-space(.)">
      <div class="indent text"><xsl:value-of select="."/></div>
    </xsl:if>
  </xsl:template>

  <xsl:template match="processing-instruction()">
    <div class="indent pi">
      &lt;?<xsl:value-of select="name(.)"/>
      <xsl:text> </xsl:text>
      <xsl:value-of select="."/>?&gt;
    </div>
  </xsl:template>

  <xsl:template match="processing-instruction()[string-length(.) &gt; 50]">
    <table>
      <tr>
        <td class="expander">-<div/></td>
        <td class="pi">
          &lt;?<xsl:value-of select="name(.)"/>
          <div class="indent expander-content"><xsl:value-of select="."/></div>
          <xsl:text>?&gt;</xsl:text>
        </td>
      </tr>
    </table>
  </xsl:template>

  <xsl:template match="comment()">
    <div class="comment indent">
      &lt;!--
      <xsl:value-of select="."/>
      --&gt;
    </div>
  </xsl:template>

  <xsl:template match="comment()[string-length(.) &gt; 50]">
    <table>
      <tr>
        <td class="expander">-<div/></td>
        <td class="comment">
          &lt;!--
          <div class="indent expander-content"><xsl:value-of select="."/></div>
          <xsl:text>--&gt;</xsl:text>
        </td>
      </tr>
    </table>
  </xsl:template>

</xsl:stylesheet>
