[ml manager doesn't want a big mail, so look at the next mail, too...]

* Joshua Slive wrote:

> http://cvs.apache.org/~slive/manual/
> 
> Contains a new draft of the proposed new manual style.  This one is
> fully generated using xslt, so all the xml files should be converted.
[...]
> I'm a little uncomfortable with the complexity of the css, but I'll live
> with it as long as the docs still work fine with all css turned off.

ok. at first: I merged the css files and excluded NN4 completely.
(manual-nonn.css). It's not really shorter but probably a little bit
clearer.

here's the long rest ;-):

with the help of google I took a crash course in XSLT and tried to
complete your work.

I modified the common.xsl and the manual.en.xsl to work with all current
(en-) xml documents correctly and produce valid xhtml (strict).
As a result of this I patched several things in the xmls which were not
correct (see xml-current.en.patch).

CSS/HTML issues, modified by me:

* reverted the link colors to the proposed :)
  the green and the red, weren't a good choice, imho.
  there was too less contrast between them.
  (e.g. I have problems with red & green, like about 20% of men)

* but, you're right, I removed the underlines of code and module links
  for better reading

* (re?)added proposed semantics (<th> instead of <td>, <ul> in module
  list etc.)

* renamed #header to #page-header, because #header clashes with the
  Header directive... ;-)

* a lot of small issues, thus the xsl produces proper HTML
  (e.g. "<example><table>...", used in howto/htaccess.xml)

* added doctype and xhtml namespace to xsl:output (manual.en.xsl)

Probably we also need some modifications to the DTDs:

- a var element
- a dfn element
- a blockquote element (?) (mod_rewrite.xml)
- proposal: a figure element, which works as below:
  <figure><title>...</title>
  <img src= width= height= alt="" />
  </figure>
  (mod_rewrite.xml uses figures, for example)
- I believe I forgot something ;-)

The changes are a suggestion, if you don't like them, please speak
now...

nd
-- 
die (eval q-qq:Just Another Perl Hacker
:-)

# André Malo, <http://www.perlig.de/> #
/* ====================== */
/*      manual.css        */
/* ====================== */

/* general                */
/* ====================== */

body {
    background-color: #fff;
    color: #036;
    padding: 0 1em 0 0;
    max-width: 55em; /* ??? */
    margin: 0;
}

p, td, th, li, ul {
    line-height: 1.3em;
}

div.example p {
    line-height: 1em;
}

/* normal links */
a:link {
    color: #0073c7;
    background-color: inherit;
}

a:visited, a:active, a:hover {
    color: #54acc4;
    background-color: inherit;
}

a:link,
a:visited {
    text-decoration: underline;
}

a:active, a:hover {
    text-decoration: none;
}

/* module links */
code.module, code.module a:link {
    color: #bc0f00;
    background-color: inherit;
}

code.module a:link,
code.module a:visited,
code.directive a:link,
code.directive a:visited {
    text-decoration: none;
}

code.module a:hover,
code.module a:active,
code.directive a:hover,
code.directive a:active {
    text-decoration: underline;
}

code.module a:visited,
code.module a:active,
code.module a:hover {
    color: #a06b66;
    background-color: inherit;
}

/* directive [links] */
code.directive,
code.directive a:link {
    color: #35a500;
    background-color: inherit;
}

code.directive a:visited,
code.directive a:active,
code.directive a:hover {
    color: #99af76;
    background-color: inherit;
}

div.example {
    background-color: #e5ecf3;
    color: #000;
    padding: 0.5em;
    margin: 1em 2em 1em 1em;
}

div.note div.example {
    border: 1px solid #000;
    background-color: inherit;
    color: #000;
}

div.example p,
div.note p,
div.example pre,
div.example table {
    padding: 0;
    margin: 0;
}

.section p {
    margin: 0 0 1em 0;
    padding: 0;
}

div.note, div.warning {
    background-color: #eee;
    color: #036;
    padding: 0.5em;
    margin: 1em 2em 1em 1em;
}

div.warning h3, div.warning p {
    background-color: #eee;
    color: #036;
    padding: 0 !important;
}

div.warning p {
    margin: 0 !important;
}

div.warning h3 {
    text-align: center;
    margin: 0 0 0.5em 0 !important;
}

table div.example, table div.note {
    margin-right: 1em;
}

td, th {
    empty-cells: show;
}

p.indent {
    margin-left: 2em;
    margin-top: 1em;
}

blockquote p {
    font-style: italic;
    margin: 0;
}

blockquote p.cite {
    font-style: normal;
    margin-top: 0;
    margin-left: 2em;
}

blockquote p.cite cite {
    font-style: normal;
}

p.figure {
    margin-left: 2em;
    font-style: italic;
}

p.figure img {
    border: 1px solid #aaa;
}

p.figure dfn {
    font-weight: bold;
}

/* headings               */
/* ====================== */

h1 {
    padding: 0.2em;
}

h1, .directive-section h2 {
    border: 1px solid #405871;
}

h1, .directive-section h2, .directive-section h2 a,
.directive-section h2 a:hover, .directive-section h2 a:active {
    text-decoration: none;
    color: #036;
    background-color: inherit;
}

.section h2, .directive-section h2 {
    padding: 0.2em 0 0.2em 0.7em;
}

.section h2, .section h2 a,
.section h2 a:hover, .section h2 a:active {
    background-color: #405871;
    color: #fff;
    text-decoration: none;
}

h1, .section h2, .directive-section h2 {
    margin: 0 0 0.5em 0;
}

h3, h3 a, h3 a:hover, h3 a:active {
    background-color: #fff;
    color: #036;
    text-decoration: none;
}

div.example h3, div.note h3 {
    background-color: inherit;
    color: #036;
    margin: 0 0 0.5em 0;
    padding: 0;
    text-align: center;
    font-size: 1em;
    font-weight: bold;
}

/* header & preamble      */
/* ====================== */

#preamble, #page-header {
    margin-left: 30px;
}

#preamble {
    padding-bottom: 1em;
}

#path {
    margin: 0.2em 0 1.2em 30px;
    padding: 0;
    font-size: smaller;
}

#path a:link, #path a:visited {
    text-decoration: none;
}

#path a:hover, #path a:active {
    text-decoration: underline;
}

#page-header p.apache {
    background-color: #405871;
    color: #fff;
    padding: 0 0 0 248px;
    line-height: 29px;
    text-align: center;
    vertical-align: middle;
    margin: 0;
}

#page-header p.menu {
    text-align: right;
    font-size: smaller;
    margin: 30px 0 0.5em 0;
    padding: 0;
}

#page-header p.menu a:link, #page-header p.menu a:visited {
    text-decoration: none;
}

#page-header p.menu a:hover, #page-header p.menu a:active {
    text-decoration: underline;
}

#page-header img {
    padding: 0;
    display: block;
    margin: -70px 0 1px 2em;
    width: 248px;
    height: 70px;
}

/* up, top and sections   */
/* ====================== */

.up {
    width: 30px;
    height: 20px;
    padding: 0;
    margin: -20px 0 1px 0;
    text-align: center;
    vertical-align: top;
}

.up img {
    vertical-align: top;
    width: 11px;
    height: 11px;
}

.top {
    float: left;
    width: 30px;
    padding: 0 0 0 30px;
    margin: 0;
}

.top a img {
    margin-top: 0.5em;
    vertical-align: bottom;
    width: 11px;
    height: 11px;
}

.top a, .top a:link img, .top a:visited img, .top a:hover img, .top a:active img,
.up a, .up a:link img, .up a:visited img, .up a:hover img, .up a:active img {
    border: 0 none;
}

.section, .directive-section {
    margin: 0 0 0 60px;
    padding: 0;
}

table.bordered table td, table.bordered table th {
    border: 0 none;
}

table.bordered td, table.bordered th,
table.bordered table.bordered td, table.bordered table.bordered th {
    border: 1px solid #aaa;
    padding: 0.2em;
}

.section table, .directive-section table, table.bordered {
    border: 1px solid #aaa;
    padding: 2px;
}

table.bordered {
    border-collapse: collapse;
}

.section table td, .directive-section table td {
    vertical-align: top;
    text-align: left;
}

div#directive-list {
    margin-left: 30px;
    padding: 0 0 1em 1em;
}

div#directive-list ul {
    margin: 0;
    padding: 0;
}

/* lists in general       */
/* ====================== */
ul {
    list-style-type: disc;
}

ul ul {
    list-style-type: square;
}

ol.up-A {
    list-style-type: upper-alpha;
}

/* toc                    */
/* ====================== */

#toc {
    margin: 0 0 1em 0;
    padding: 0;
}

#toc li {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

#toc li img {
    margin-right: 19px;
}

/* see also               */
/* ====================== */

.seealso {
    margin: 0 0 1em 0;
    padding: 0;
}

.seealso li {
    list-style-type: none;
    margin: 0;
    padding: 0 0 0 34px;
}

/* module overview tables */
/* ====================== */

table.module {
    border: 1px solid #aaa;
    padding: 2px;
    margin-top: 0.5em;
    margin-bottom: 0;
}

table.module th, table.module td {
    text-align: left;
    vertical-align: top;
}

table.module th {
    font-weight: bold;
}

table.module th a:link, table.module th a:visited {
    text-decoration: none;
}

table.module th a:hover, table.module th a:active {
    text-decoration: underline;
}

/* directive overview tables */
/* ========================= */

table.directive {
    border: 1px solid #aaa;
    padding: 2px;
    margin-top: 0.5em;
    margin-bottom: 0;
}

table.directive th, table.directive td {
    text-align: left;
    vertical-align: top;
}

table.directive th {
    font-weight: bold;
}

table.directive th a:link, table.directive th a:visited {
    text-decoration: none;
}

table.directive th a:hover, table.directive th a:active {
    text-decoration: underline;
}

/* related stuff          */
/* ====================== */

table.related {
    border: 1px solid #aaa;
    padding: 2px;
    margin-top: 0.5em;
    margin-bottom: 0;
}

table.related a:link, table.related a:visited {
    text-decoration: none;
}

table.related a:hover, table.related a:active {
    text-decoration: underline;
}

table.related th {
    font-weight: bold;
    text-align: left;
    vertical-align: middle;
    background-color: #e5ecf3;
    color: #405871;
    padding: 0.2ex 2px;
}

table.related td {
    vertical-align: top;
    text-align: left;
    padding: 0 2px;
}

table.related td ul, table.related td li {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

/* footer                 */
/* ====================== */

#footer {
    margin-left: 30px;
    font-size: smaller;
    border-top-style: solid;
    border-top-width: 1px;
    border-color: #405871;
    padding-top: 0.2em;
}

#footer .apache {
    float: left;
    text-align: left;
    padding: 0 0 1em 0;
    margin-top: 0;
    font-weight: bold;
}

#footer .menu {
    float: right;
    text-align: right;
    margin-top: 0;
    padding: 0 0 1em 0;
}

#footer p.menu a:link, #footer p.menu a:visited {
    text-decoration: none;
}

#footer p.menu a:hover, #footer p.menu a:active {
    text-decoration: underline;
}

/* h3 margin adjustment   */
/* ====================== */

h3 {
    margin: 1.3em 0 0.4em 0;
}

h3 + * {
    margin-top: 0;
}

/* IE confuses the + * ... */
ul, .section table, .directive-section table {
    margin-bottom: 1em;
}

/* fonts general          */
/* ====================== */

pre, code {
    font-family: "Courier New", Courier, monospace;
    font-weight: normal;
}

body, p, td, th, ul, li, h1, h2, h3, div, #toc, dl, dt, dd {
    font-family: Arial, Helvetica, sans-serif;
}

body, p, td, th, ul, li {
    font-weight: normal;
}

h1, h2, h3, #page-header p.apache, dt, strong, th {
    font-weight: bold;
}

#page-header p.apache
    { font-size: 16px;  }
h1  { font-size: 1.5em; }
h2  { font-size: 1.2em; }
h3  { font-size: 1.1em; }
div.example code, div.example pre, div.note pre
    { font-size: 0.9em; }

/* ====================== */
/* The End                */
/* ====================== */
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output 
  method="xml"
  encoding="ISO-8859-1"
  indent="no"
  doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
  doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";
/>

<!-- Read the localized messages from the specified language file -->
<xsl:variable name="messages" select="document('en.xml')/messages"/>

<!-- Now get the real guts of the stylesheet -->
<xsl:include href="common.xsl"/>

</xsl:stylesheet>
<?xml version="1.0"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#160;"> ]>
<xsl:stylesheet version="1.0"
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
	      xmlns="http://www.w3.org/1999/xhtml";>

  <!--                                                          -->
  <!-- Please, don't hard-code output strings! Use the language -->
  <!-- files and the translation "stuff"...                     -->
  <!--                                                          -->

  <!-- Constants used for case translation -->
  <xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
  <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />

  <xsl:variable name="path">
    <xsl:choose>
      <xsl:when test="*/relativepath/@href">
        <xsl:value-of select="*/relativepath/@href"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="'..'"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>


  <!--                              -->
  <!-- Builds the moduleindex page  -->
  <!--                              -->
  <xsl:template match="moduleindex">
    <html>
      <xsl:call-template name="head"/>
      <body>
          <xsl:call-template name="top"/>  
          <div id="preamble">        
          <h1>
            <xsl:value-of select="title"/>
          </h1>
          
          <xsl:apply-templates select="summary" />
	  </div>
          
          <div class="top"><a href="#top"><img src="../images/up.gif" alt="top" /></a></div>
          <div class="section">

          <h2>
            <xsl:value-of select="$messages/[EMAIL PROTECTED]'corefeatures']"/>
          </h2>
            
          <dl>
            <xsl:for-each select="document(modulefilelist/modulefile)/modulesynopsis">
              <xsl:sort select="name"/>
                
              <xsl:if test="status='MPM' or status='Core'">
                <dt>
                  <a href="{name}.html">
                    <xsl:value-of select="name"/>
                  </a>
                </dt>
                <dd>
                  <xsl:apply-templates select="description"/>
                </dd>
              </xsl:if>
            </xsl:for-each>
          </dl>
          </div>  
          
          <div class="top"><a href="#top"><img src="../images/up.gif" alt="top" /></a></div>
          <div class="section">
	  <h2>
            <xsl:value-of select="$messages/[EMAIL PROTECTED]'othermodules']"/>
          </h2>
            
          <dl>
            <xsl:for-each select="document(modulefilelist/modulefile)/modulesynopsis">
              <xsl:sort select="name"/>
                
              <xsl:if test="status!='MPM' and status!='Core'">
                <dt>
                  <a href="{name}.html">
                    <xsl:value-of select="name"/>
                  </a>
                </dt>
                <dd>
                  <xsl:apply-templates select="description"/>
                </dd>
              </xsl:if>
            </xsl:for-each>
          </dl>
          </div>

        <xsl:call-template name="bottom"/>
      </body>
    </html>
  </xsl:template> 
  <!-- /moduleindex -->



  <!--                                                    -->
  <!-- <directiveindex>                                   -->
  <!-- Builds the directive index page                    -->
  <!--                                                    -->
  <xsl:template match="directiveindex">
    <html>
      <xsl:call-template name="head"/>
      <body>
          <xsl:call-template name="top"/>
          <div id="preamble">        
          <h1>
            <xsl:value-of select="title"/>
          </h1>
          
          <xsl:apply-templates select="summary" />
	  </div>
          
          <div id="directive-list">
          <ul>
            <xsl:for-each select="document(modulefilelist/modulefile)/modulesynopsis/directivesynopsis">
              <xsl:sort select="name"/>
               
              <xsl:if test="not(@location)">
                <li>
                  <a href="{/modulesynopsis/name}.html#{translate(name,$uppercase,$lowercase)}">
                    <xsl:value-of select="name"/>
                  </a>
                </li>
              </xsl:if>
            </xsl:for-each>
          </ul>
	  </div>
        <xsl:call-template name="bottom"/>
      </body>
    </html>
  </xsl:template> 
  <!-- /directiveindex -->
  
  <!--                                                    -->
  <!-- <manualpage>                                       -->
  <!-- Process an entire document into an HTML page       -->
  <!--                                                    -->
  <xsl:template match="manualpage">
    <html>
      <xsl:call-template name="head"/>
      <body>
          <xsl:call-template name="top"/>  
 
          <div id="preamble">        
          <h1><xsl:value-of select="title"/></h1>

          <xsl:apply-templates select="summary"/>
          
          <xsl:if test="count(section) > 1">
            <ul id="toc">
              <xsl:apply-templates select="section" mode="index"/>
            </ul>
          </xsl:if>
          
          <xsl:if test="seealso">
            <h3><xsl:value-of select="$messages/[EMAIL PROTECTED]'seealso']"/></h3>
            <ul class="seealso">
              <xsl:for-each select="seealso">
                <li><xsl:apply-templates/></li>
              </xsl:for-each>
            </ul>
          </xsl:if>
          </div> <!-- /preamble -->

          <xsl:apply-templates select="section"/>
        <xsl:call-template name="bottom"/>
      </body>
    </html>
  </xsl:template>
  <!-- /manualpage -->



  <!--                                                    -->
  <!-- <modulesynopsis>                                   -->
  <!-- Process an entire document into an HTML page       -->
  <!--                                                    -->
  <xsl:template match="modulesynopsis">
    <html>
      <xsl:call-template name="head"/>
      <body>
          <xsl:call-template name="top"/>
          <div id="preamble">
          <h1>
            <xsl:value-of select="$messages/[EMAIL PROTECTED]'apachemodule']"/>
            <xsl:text> </xsl:text> 
            <xsl:value-of select="name"/>
          </h1>
          
          <!-- Description and module-headers -->
          <table class="module">
            <tr>
              <th>
                  <xsl:value-of select="$messages/[EMAIL PROTECTED]'description']"/>:
              </th>
              <td>
                <xsl:apply-templates select="description"/>
              </td>
            </tr>
                  
            <tr>
              <th>
                <a href="module-dict.html#Status">
                  <xsl:value-of select="$messages/[EMAIL PROTECTED]'status']"/>:
                </a>
              </th>
              <td>
                <xsl:value-of select="status"/>
              </td>
            </tr>
                  
            <xsl:if test="identifier">
              <tr>
                <th>
                  <a href="module-dict.html#ModuleIdentifier">
                    <xsl:value-of select="$messages/[EMAIL PROTECTED]'moduleidentifier']"/>:
                  </a> 
                </th>
                <td>
                  <xsl:value-of select="identifier"/>
                </td>
                </tr>
                </xsl:if>
                  
                  <xsl:if test="compatibility">
                    <tr>
                      <th>
                        <a href="module-dict.html#Compatibility">
                          <xsl:value-of select="$messages/[EMAIL PROTECTED]'compatibility']"/>:
                        </a>
                      </th>
                      <td>
                        <xsl:value-of select="compatibility"/>
                      </td>
                    </tr>
                  </xsl:if>
          </table>

          <!-- Summary of module features/usage (1 to 3 paragraphs, optional) -->
          <xsl:if test="summary">
            <h3>
              <xsl:value-of select="$messages/[EMAIL PROTECTED]'summary']"/>
            </h3>
            
            <xsl:apply-templates select="summary"/>
          </xsl:if>
   
          <!-- Index of directives, automatically generated from
               directivesynopsis/name -->
          <h3>
            <xsl:value-of select="$messages/[EMAIL PROTECTED]'directives']"/>
          </h3>
          
          <xsl:if test="directivesynopsis">
            <ul id="toc">
              <xsl:for-each select="directivesynopsis">
                <xsl:sort select="name"/>
                
                <xsl:variable name="name">
                  <xsl:value-of select="name"/>
                </xsl:variable>
                
                <xsl:variable name="lowername" select="translate($name, $uppercase, $lowercase)" />
                
                <xsl:if test="not(@location)">
                  <li><img src="{$path}/images/down.gif" alt="" />&nbsp;<a href="#{$lowername}">
                      <xsl:value-of select="name"/>
                    </a>
                  </li>
                </xsl:if>
                
                <xsl:if test="./@location">
                  <xsl:variable name="location">
                    <xsl:value-of select="./@location"/>
                  </xsl:variable>
                  
                  <xsl:variable name="lowerlocation" select="translate($location, $uppercase, $lowercase)" />
                  
                  <li><img src="{$path}/images/down.gif" alt="" />&nbsp;<a href="{$lowerlocation}.html#{$lowername}">
                      <xsl:value-of select="name"/>
                    </a>
                  </li>
                </xsl:if>
              </xsl:for-each>
            </ul>
          </xsl:if>
          
          <xsl:if test="not(directivesynopsis)">
            <p>
              <xsl:value-of select="$messages/[EMAIL PROTECTED]'nodirectives']"/>
            </p>
          </xsl:if>
   
          <xsl:if test="seealso">
            <h3>
                <xsl:value-of select="$messages/[EMAIL PROTECTED]'seealso']"/>
            </h3>
            
            <ul class="seealso">
              <xsl:for-each select="seealso">
                <li>
                  <xsl:apply-templates/>
                </li>
              </xsl:for-each>
            </ul>
          </xsl:if>
        
          </div> <!-- /preamble -->
          <!-- Sections of documentation about the module as a whole -->
          <xsl:apply-templates select="section"/>
          
          <!-- Directive documentation -->
          <xsl:apply-templates select="directivesynopsis">
            <xsl:sort select="name"/>
          </xsl:apply-templates> 

        <xsl:call-template name="bottom"/>
      </body>
    </html>
  </xsl:template>
  <!-- /modulesynopsis -->


  <!--                                                            -->
  <!--    Utility templates for constructing pages                -->
  <!--                                                            -->

  <xsl:template name="head">
    <head>
      <xsl:comment>
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      </xsl:comment>
      <title>
        <xsl:choose>
          <xsl:when test="name">
            <xsl:value-of select="name"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="title"/>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:text> </xsl:text>
        <xsl:value-of select="$messages/[EMAIL PROTECTED]'apachetitle']"/>
      </title>
      
      <link rel="stylesheet" type="text/css" href="{$path}/style/manual-nonn.css" media="all" />
    </head>
  </xsl:template>

  <xsl:template name="top">
<div id="page-header">
<p class="menu">
<a href="{$path}/mod/">Modules</a>                   |
<a href="{$path}/mod/directives.html">Directives</a> |
<a href="{$path}/faq/">FAQ</a>                       |
<a href="{$path}/glossary.html">Glossary</a>         |
<a href="{$path}/sitemap.html">Sitemap</a>
</p>

<p class="apache"><xsl:value-of select="$messages/[EMAIL PROTECTED]'apachehttpserver']"/></p>
<img src="{$path}/images/feather.gif" alt="" />
</div> <!-- /page-header -->

<div class="up"><a href="./"><img src="{$path}/images/left.gif" alt="up" title="go up in hierarchy" /></a>
</div>

<div id="path">
<a href="http://www.apache.org/";>Apache</a>                       &gt;
<a href="http://httpd.apache.org/";>HTTP Server</a>                &gt;
<a href="http://httpd.apache.org/docs-project/";>Documentation</a> &gt;
<a href="{$path}/">Version 2.0</a>
</div>
  </xsl:template>

  <xsl:template name="bottom">

<div id="footer">
<p class="apache">
Maintained by the <a href="http://httpd.apache.org/docs-project/";>Apache
HTTP Server Documentation Project</a>
</p>

<p class="menu">
<a href="{$path}/mod/">Modules</a>                   |
<a href="{$path}/mod/directives.html">Directives</a> |
<a href="{$path}/faq/">FAQ</a>                       |
<a href="{$path}/glossary.html">Glossary</a>         |
<a href="{$path}/sitemap.html">Sitemap</a>
</p>
</div>

  </xsl:template>

  <!--                                                            -->
  <!--    Sections and Subsections                                -->
  <!--                                                            -->


  <!-- Subsections: get a lower level heading -->
  <xsl:template match="section/section">
    <xsl:variable name="href">
      <xsl:value-of select="@id"/>
    </xsl:variable>
    
    <!-- Section heading -->
    <xsl:if test="@id">
      <h3>
        <a id="{$href}" name="{$href}">
          <xsl:apply-templates select="./title" mode="print"/>
        </a>
      </h3>
    </xsl:if>
    
    <xsl:if test="not(@id)">
      <h3>
        <xsl:apply-templates select="./title" mode="print"/>
      </h3>
    </xsl:if>
    
    <!-- Section body -->
    <xsl:apply-templates/>
  </xsl:template>



  <!-- Process a documentation section -->
  <xsl:template match="section">
    <xsl:variable name="href">
      <xsl:value-of select="@id"/>
    </xsl:variable>

    <div class="top"><a href="#top"><img src="{$path}/images/up.gif" alt="top" /></a></div>
    <div class="section">
    <!-- Section heading -->
    <xsl:if test="@id">
      <h2>
        <a id="{$href}" name="{$href}">
          <xsl:apply-templates select="./title" mode="print"/>
        </a>
      </h2>
    </xsl:if>
    
    <xsl:if test="not(@id)">
      <h2>
        <xsl:apply-templates select="./title" mode="print"/>
      </h2>
    </xsl:if>
    
    <!-- Section body -->
    <xsl:apply-templates/>
    </div><!-- /section -->
  </xsl:template>



  <xsl:template match="section/title" mode="print">
    <xsl:apply-templates/>
  </xsl:template>



  <!-- Don't print the title twice -->
  <xsl:template match="section/title">
  </xsl:template>



  <xsl:template match="section" mode="index">
    <xsl:variable name="href">
      <xsl:value-of select="@id"/>
    </xsl:variable>
    
    <li><img src="{$path}/images/down.gif" alt="" />&nbsp;<a href="#{$href}">
        <xsl:apply-templates select="title" mode="print"/>
      </a>
    </li>
  </xsl:template>

  <!--                                                            -->
  <!--    Directivesynopsis                                       -->
  <!--                                                            -->
  <xsl:template match="directivesynopsis">
    <xsl:if test="not(@location)">

    <div class="top"><a href="#top"><img src="../images/up.gif" alt="top" /></a></div>
    <div class="directive-section">
      <xsl:variable name="name">
        <xsl:value-of select="./name"/>
      </xsl:variable>
      
      <xsl:variable name="lowername" select="translate($name, $uppercase, $lowercase)" />
      
      <!-- Directive heading gets both mixed case and lowercase anchors,
           and includes lt/gt only for "section" directives -->
      <h2>
        <a id="{$name}" name="{$name}">
          <xsl:if test="./@type='section'">&lt;</xsl:if>
          <xsl:value-of select="./name"/>
          <xsl:if test="./@type='section'">&gt;</xsl:if>
        </a>
        <xsl:text> </xsl:text>
        <a id="{$lowername}" name="{$lowername}">
          <xsl:value-of select="$messages/[EMAIL PROTECTED]'directive']"/>
        </a>
      </h2>

      <!-- Directive header -->
            <table class="directive">
              <tr>
                <th>
                    <xsl:value-of select="$messages/[EMAIL PROTECTED]'description']"/>: 
                </th>
                <td>
                  <xsl:value-of select="description"/>
                </td>
              </tr>
              
              <tr>
                <th>
                  <a href="directive-dict.html#Syntax">
                    <xsl:value-of select="$messages/[EMAIL PROTECTED]'syntax']"/>:
                  </a> 
                </th>
                <td>
                  <xsl:apply-templates select="syntax"/>
                </td>
              </tr>
              
              <xsl:if test="default">
                <tr>
                  <th>
                    <a href="directive-dict.html#Default">
                      <xsl:value-of select="$messages/[EMAIL PROTECTED]'default']"/>: 
                    </a> 
                  </th>
                  <td>
                    <code>
                      <xsl:value-of select="default"/>
                    </code>
                  </td>
                </tr>
              </xsl:if>
              
              <tr>
                <th>
                  <a href="directive-dict.html#Context">
                    <xsl:value-of select="$messages/[EMAIL PROTECTED]'context']"/>:
                  </a> 
                </th>
                <td>
                  <xsl:apply-templates select="contextlist"/>
                </td>
              </tr>
              
              <xsl:if test="override">
                <tr>
                  <th>
                    <a href="directive-dict.html#Override">
                      <xsl:value-of select="$messages/[EMAIL PROTECTED]'override']"/>:
                    </a> 
                  </th>
                  <td>
                    <xsl:value-of select="override"/>
                  </td>
                </tr>
              </xsl:if>
              
              <tr>
                <th>
                  <a href="directive-dict.html#Status">
                    <xsl:value-of select="$messages/[EMAIL PROTECTED]'status']"/>:
                  </a> 
                </th>
                <td>
                  <xsl:value-of select="/modulesynopsis/status"/>
                </td>
              </tr>
              
              <tr>
                <th>
                  <a href="directive-dict.html#Module">
                    <xsl:value-of select="$messages/[EMAIL PROTECTED]'module']"/>:
                  </a> 
                </th>
                <td>
                  <xsl:if test="modulelist">
                    <xsl:apply-templates select="modulelist"/>
                  </xsl:if>
                  
                  <xsl:if test="not(modulelist)">
                    <xsl:value-of select="/modulesynopsis/name"/>
                  </xsl:if>
                </td>
              </tr>
              
              <xsl:if test="compatibility">
                <tr>
                  <th>
                    <a href="directive-dict.html#Compatibility">
                      <xsl:value-of select="$messages/[EMAIL PROTECTED]'compatibility']"/>:
                    </a> 
                  </th>
                  <td>
                    <xsl:value-of select="compatibility"/>
                  </td>
                </tr>
              </xsl:if>
            </table>

      <xsl:apply-templates select="usage"/>
      
      <xsl:if test="seealso">
        <h3>
            <xsl:value-of select="$messages/[EMAIL PROTECTED]'seealso']"/>
        </h3>
        
        <ul>
          <xsl:for-each select="seealso">
            <li>
              <xsl:apply-templates/>
            </li>
          </xsl:for-each>
        </ul>
      </xsl:if>
      
    </div>

    </xsl:if> <!-- not(@location) -->
  </xsl:template>
  <!-- /directivesynopsis -->



  <!--                                                    -->
  <!-- <contextlist>                                      -->
  <!-- Passes through content                             -->
  <!--                                                    -->
  <xsl:template match="contextlist">
    <xsl:apply-templates select="context"/>
  </xsl:template> 
  <!-- /contextlist -->



  <!--                                                    -->
  <!-- <context>                                          -->
  <!-- Each entry is separeted with a comma               -->
  <!--                                                    -->
  <xsl:template match="context">
    <xsl:value-of select="." />
    <xsl:if test="not(position()=last())">, </xsl:if>
  </xsl:template> 
  <!-- /context -->



  <!--                                                    -->
  <!-- <modulelist>                                       -->
  <!-- Passes through content                             -->
  <!--                                                    -->
  <xsl:template match="modulelist">
    <xsl:for-each select="module">
      <xsl:call-template name="module"/>
      <xsl:if test="not(position()=last())">, </xsl:if>
    </xsl:for-each>
  </xsl:template> 
  <!-- /modulelist -->


  <!--                                                    -->
  <!-- <example>                                          -->
  <!-- Examples are set in a "colored" table.             -->
  <!--                                                    -->
  <xsl:template match="example">
    <div class="example">
       <xsl:apply-templates select="title" mode="print"/>

       <xsl:if test="pre">
         <pre>
           <xsl:value-of select="pre"/>
	 </pre>
       </xsl:if>
       
       <xsl:if test="not(pre)">
         <xsl:if test="table">
           <xsl:apply-templates/>
         </xsl:if>

         <xsl:if test="not(table)">
           <p><code>
             <xsl:apply-templates/>
           </code></p>
         </xsl:if>
       </xsl:if>
    </div>
  </xsl:template> 
  <!-- /example -->


  <xsl:template match="example/pre">
  </xsl:template> 


  <!--                                                    -->
  <!-- <example><title>                                   -->
  <!--                                                    -->
  <xsl:template match="example/title" mode="print">
    <h3>
        <xsl:apply-templates/>
    </h3>
  </xsl:template> 
  <!-- /example/title -->



  <!--                                                    -->
  <!-- <example><title>                                   -->
  <!--                                                    -->
  <xsl:template match="example/title">
  </xsl:template>
  <!-- /example/title -->



  <!--                                                    -->
  <!-- <note>                                             -->
  <!-- Notes are placed in a table. Uses different back-  -->
  <!-- ground colors, depending on type of note.          -->
  <!--                                                    -->
  <xsl:template match="note">
      <xsl:choose>
         <xsl:when test="@type='warning'">
           <div class="warning">
             <xsl:apply-templates/>
           </div>
         </xsl:when>
         <xsl:otherwise>
           <div class="note">
             <xsl:apply-templates/>
           </div>
         </xsl:otherwise>
       </xsl:choose>
  </xsl:template>  
  <!-- /note -->



  <!--                                                    -->
  <!-- <note><title>                                      -->
  <!--                                                    -->
  <xsl:template match="note/title">
    <h3>
        <xsl:apply-templates/>
    </h3>
  </xsl:template> 
  <!-- /note/title -->



  <!--                                                    -->
  <!-- <directive>                                        -->
  <!-- Inserts link to another directive, which might be  -->
  <!-- in another module. References are converted into   --> 
  <!-- lower case.                                        -->
  <!--                                                    -->
  <xsl:template match="directive" name="directive">
    <xsl:if test="@module">
      <xsl:variable name="module">
        <xsl:value-of select="./@module"/>
      </xsl:variable>
      
      <xsl:variable name="directive">
        <xsl:value-of select="."/>
      </xsl:variable>
      
      <xsl:variable name="lowerdirective" select="translate($directive, $uppercase, $lowercase)" />
      
      <xsl:choose>
        <xsl:when test="@module=/modulesynopsis/name">
          <code class="directive">
            <a href="#{$lowerdirective}">
              <xsl:if test="./@type='section'">&lt;</xsl:if>
              <xsl:value-of select="."/>
              <xsl:if test="./@type='section'">&gt;</xsl:if>
            </a>
          </code>
      </xsl:when>
        <xsl:otherwise>
          <code class="directive">
            <a href="{$path}/mod/{$module}.html#{$lowerdirective}">
              <xsl:if test="./@type='section'">&lt;</xsl:if>
              <xsl:value-of select="."/>
              <xsl:if test="./@type='section'">&gt;</xsl:if>
            </a>
          </code>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:if>
    
    <xsl:if test="not(@module)">
      <code class="directive">
        <xsl:if test="./@type='section'">&lt;</xsl:if>
        <xsl:value-of select="."/>
        <xsl:if test="./@type='section'">&gt;</xsl:if>
      </code>
    </xsl:if>
  </xsl:template>
  <!-- /directive -->



  <!--                                                    -->
  <!-- <module>                                           -->
  <!-- Inserts a link to refereed module                  -->
  <!--                                                    -->
  <xsl:template match="module" name="module">
    <code class="module">
      <a href="{$path}/mod/{.}.html">
        <xsl:value-of select="."/>
      </a>
    </code>
  </xsl:template> 
  <!-- /module -->



  <!--                                                    -->
  <!-- <related>                                          -->
  <!--                                                    -->
  <xsl:template match="related">
    <table class="related">
      <tr><th><xsl:value-of select="$messages/[EMAIL PROTECTED]'relatedmodules']"/></th>
      <th><xsl:value-of select="$messages/[EMAIL PROTECTED]'relateddirectives']"/></th></tr>
      <tr><td>
        <xsl:if test="count(modulelist/*) &gt; 0">
	<ul>
	  <xsl:apply-templates select="modulelist"/>
	</ul>
	</xsl:if>
      </td>
      <td>
        <xsl:if test="count(directivelist/*) &gt; 0">
        <ul>
	  <xsl:apply-templates select="directivelist"/>
	</ul>
	</xsl:if>
      </td></tr>
    </table>
  </xsl:template>
  <!-- /related -->



  <xsl:template match="related/modulelist">
    <xsl:for-each select="module">
      <li>
        <xsl:call-template name="module"/>
      </li>
    </xsl:for-each>
  </xsl:template>



  <xsl:template match="related/directivelist">
    <xsl:for-each select="directive">
      <li>
        <xsl:call-template name="directive"/>
      </li>
    </xsl:for-each>
  </xsl:template>



  <!--                                                    -->
  <!-- <summary>                                          -->
  <!-- Passes through content                             -->
  <!--                                                    -->
  <xsl:template match="summary">
    <xsl:apply-templates/>
  </xsl:template> 
  <!-- /summary -->



  <!--                                                    -->
  <!-- <description>                                      -->
  <!-- Passes through content                             -->
  <!--                                                    -->
  <xsl:template match="description">
    <xsl:apply-templates/>
  </xsl:template> 
  <!-- /description -->



  <!--                                                    -->
  <!-- <usage>                                            -->
  <!-- Passes through content                             -->
  <!--                                                    -->
  <xsl:template match="usage">
    <xsl:apply-templates/>
  </xsl:template> 
  <!-- /usage -->



  <!--                                                    -->
  <!-- <syntax>                                           -->
  <!-- Passes through content                             -->
  <!--                                                    -->
  <xsl:template match="syntax">
    <xsl:apply-templates/>
  </xsl:template> 
  <!-- /syntax -->

  <!--                                                    -->
  <!-- <table border>                                     -->
  <!--                                                    -->
  <xsl:template match="table">
    <xsl:if test="@border">
      <table class="bordered">
        <xsl:apply-templates/>
      </table>
    </xsl:if>

    <xsl:if test="not(@border)">
      <table>
        <xsl:apply-templates/>
      </table>
    </xsl:if>
  </xsl:template> 

  <!--                                                    -->
  <!-- <ol type                                           -->
  <!--                                                    -->
  <xsl:template match="ol">
    <xsl:if test="@type = 'A'">
      <ol class="up-A">
        <xsl:apply-templates/>
      </ol>
    </xsl:if>

    <xsl:if test="not(@type)">
      <ol>
        <xsl:apply-templates/>
      </ol>
    </xsl:if>
  </xsl:template> 

  <!--                                                    -->
  <!-- Process everything else by just passing it through -->
  <!--                                                    -->
  <xsl:template match="*|@*">
    <xsl:copy>
      <xsl:apply-templates select="@*|*|text()"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to