Here's a newer version of manual.xsl. There are still some problems with 
Mozilla. Works great in Xalan, xsltproc, and so on. I'll try to find the 
source of these problems later on tonight.

This version localizes all string (I hope.) It also adds two new types to 
<note>; warning and securitywarning. Right now the only difference is that 
the background color gets a bit red.

-- 
.---------------------.
| Patrik Grip-Jansson |
| Ringen 4B           |    .--------------------.
| 78444 Borlänge   .--'----' http://gnulix.com/ `---------.
| Sweden           |  All views and opinions are my own,  |
`------------------| PH:+46(0)24382823 PW:+46(0)707354360 |
                   `--------------------------------------'
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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/TR/xhtml1/strict";>

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

 <!-- Defined parameters (overrideable) -->
 <xsl:param name="relative-path" select="'.'"/>

 <!-- Macros, variables, and stuff for the localization -->

 <!-- English is the default language -->
 <xsl:variable name="language">
  <xsl:if test="modulesynopsis/language">
   <xsl:value-of select="modulesynopsis/language"/>
  </xsl:if>
  <xsl:if test="not(modulesynopsis/language)">en</xsl:if>
 </xsl:variable>

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

</xsl:stylesheet>

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- English -->
<messages>
 <message name="seealso">See also </message>
 <message name="description">Description</message>
 <message name="apachemodule">Apache Module</message>
 <message name="status">Status</message>
 <message name="moduleidentifier">Module Identifier</message>
 <message name="compatibility">Compatibility</message>
 <message name="syntax">Syntax</message>
 <message name="default">Default</message>
 <message name="context">Context</message>
 <message name="override">Override</message>
 <message name="status">Status</message>
 <message name="module">Module</message>
 <message name="nodirective">This module provides no directives.</message>
 <message name="apachedocalt">[APACHE DOCUMENTATION]</message>
 <message name="apachehttpserver">Apache HTTP Server Version 2.0</message>
 <message name="index">Index</message>
 <message name="home">Home</message>
 <message name="directives">Directives</message>
 <message name="directive">Directive</message>
</messages>
<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Swedish -->
<messages>
 <message name="seealso">Se även</message>
 <message name="description">Beskrivning</message>
 <message name="apachemodule">Apache Modul</message>
 <message name="status">Status</message>
 <message name="moduleidentifier">Module Identifier</message>
 <message name="compatibility">Compatibility</message>
 <message name="syntax">Syntax</message>
 <message name="default">Default</message>
 <message name="context">Context</message>
 <message name="override">Override</message>
 <message name="status">Status</message>
 <message name="module">Modul</message>
 <message name="nodirective">This module provides no directives.</message>
 <message name="apachedocalt">[APACHE DOKUMENTATION]</message>
 <message name="apachehttpserver">Apache HTTP Server Version 2.0</message>
 <message name="index">Index</message>
 <message name="home">Hem</message>
 <message name="directives">Directives</message>
 <message name="directive">Directive</message>
</messages>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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/TR/xhtml1/strict";>

<!-- Include constants, variables, and macros -->
<xsl:import href="settings.xsl" />

<xsl:output method="html" encoding="iso-8859-1" indent="yes"/>

 <!-- Process an entire document into an HTML page -->
 <xsl:template match="modulesynopsis">
<html>
 <head>
<xsl:comment>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</xsl:comment>
  <xsl:apply-templates select="meta"/>
  <title><xsl:value-of select="name"/> - Apache HTTP Server</title>
  <link rel="stylesheet" type="text/css" href="../style/manual.css" />
 </head>
 <body>
  <blockquote>
   <div align="center">
    <img src="../images/sub.gif" width="600" height="62" >
     <xsl:attribute name="alt">
      <xsl:value-of select="$messages/[EMAIL PROTECTED]'apachedocalt']"/>
     </xsl:attribute>
    </img>
    <h3><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'apachehttpserver']"/></h3>
   </div>
   <h1 align="center"><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'apachemodule']"/> <xsl:value-of select="name"/></h1>
   <!-- Description and module-headers -->
   <table bgcolor="#cccccc" cellpadding="0" cellspacing="1"><tr><td>
    <table bgcolor="#ffffff">
     <tr><td valign="top"><span class="help"><xsl:value-of 
select="$messages/[EMAIL PROTECTED]'description']"/>:</span> </td>
         <td><xsl:apply-templates select="description"/></td></tr>
     <tr><td><a class="help" href="module-dict.html#Status"><xsl:value-of 
select="$messages/[EMAIL PROTECTED]'status']"/>:</a> </td>
         <td><xsl:value-of select="status"/></td></tr>
  <xsl:if test="identifier">
     <tr><td><a class="help" 
href="module-dict.html#ModuleIdentifier"><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'moduleidentifier']"/>:</a> </td>
         <td><xsl:value-of select="identifier"/></td></tr>
  </xsl:if>
  <xsl:if test="compatibility">
     <tr><td><a class="help" href="module-dict.html#Compatibility"
       ><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'compatibility']"/>:</a> </td>
         <td><xsl:apply-templates select="compatibility"/></td>
     </tr>
    </xsl:if>
   </table>
 </td></tr></table>

<!-- Summary of module features/usage (1 to 3 paragraphs, optional) -->

<xsl:if test="summary">
  <h2><xsl:value-of select="$messages/[EMAIL PROTECTED]'summary']"/></h2>
  <xsl:apply-templates select="summary"/>
</xsl:if>

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

<!-- Index of directives, automatically generated from
     directivesynopsis/name -->

<h2><xsl:value-of select="$messages/[EMAIL PROTECTED]'directives']"/></h2>

<xsl:if test="directivesynopsis">
  <ul>
     <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><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><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]'nodirective']"/></p>
</xsl:if>

<!-- Sections of documentation about the module as a whole -->

<xsl:apply-templates select="section"/>

<hr />

<!-- Directive documentation -->

<xsl:apply-templates select="directivesynopsis">
  <xsl:sort select="name"/>
</xsl:apply-templates> 

<!-- Page footer -->

<h3 align="center"><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'apachehttpserver']"/></h3>
<a href="./"><img src="../images/index.gif" width="100" height="32">
 <xsl:attribute name="alt">
  <xsl:value-of select="$messages/[EMAIL PROTECTED]'index']"/>
 </xsl:attribute>
</img>
</a>
<a href="../"><img src="../images/home.gif" width="100" height="32">
 <xsl:attribute name="alt">
  <xsl:value-of select="$messages/[EMAIL PROTECTED]'home']"/>
 </xsl:attribute>
</img>
</a>

</blockquote>
</body>
</html>
</xsl:template> <!-- /modulesynopsis -->


<!-- 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 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>
      <!-- Section heading -->
    <xsl:if test="@id">
      <h2><a 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/>
  </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="directivesynopsis">

  <xsl:if test="not(@location)">
  <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 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 
      name="{$lowername}"><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'directive']"/></a></h2>

<!-- Directive header -->
<table bgcolor="#cccccc" border="0" cellspacing="0" cellpadding="1">
<tr><td>
<table bgcolor="#ffffff" width="100%">
  <tr><td><strong><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'description']"/>: </strong></td>
    <td><xsl:value-of select="description"/></td></tr>
  <tr><td><a class="help" href="directive-dict.html#Syntax"><xsl:value-of 
select="$messages/[EMAIL PROTECTED]'description']"/>:</a> </td>
    <td><xsl:apply-templates select="syntax"/></td></tr>
  <xsl:if test="default">
    <tr><td><a class="help" href="directive-dict.html#Default"
      ><xsl:value-of select="$messages/[EMAIL PROTECTED]'default']"/>:</a> </td>
      <td><code><xsl:value-of select="default"/></code></td></tr>
  </xsl:if>
  <tr><td><a class="help" href="directive-dict.html#Context"><xsl:value-of 
select="$messages/[EMAIL PROTECTED]'context']"/>:</a> </td>
    <td><xsl:apply-templates select="contextlist"/></td></tr>
  <xsl:if test="override">
    <tr><td><a class="help" href="directive-dict.html#Override"
    ><xsl:value-of select="$messages/[EMAIL PROTECTED]'override']"/>:</a> </td>
    <td><xsl:value-of select="override"/></td></tr>
  </xsl:if>
  <tr><td><a class="help" href="directive-dict.html#Status"><xsl:value-of 
select="$messages/[EMAIL PROTECTED]'status']"/>:</a> </td>
    <td><xsl:value-of select="/modulesynopsis/status"/></td></tr>
  <tr><td><a class="help" href="directive-dict.html#Module"><xsl:value-of 
select="$messages/[EMAIL PROTECTED]'module']"/>:</a> </td>
    <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><td><a class="help" href="directive-dict.html#Compatibility"
      ><xsl:value-of select="$messages/[EMAIL 
PROTECTED]'compatibility']"/>:</a> </td>
      <td><xsl:value-of select="compatibility"/></td></tr>
  </xsl:if>
</table>
</td></tr></table>

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

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

  <xsl:template match="contextlist">
    <xsl:apply-templates select="context"/>
  </xsl:template>

  <xsl:template match="context">
    <xsl:value-of select="." />
    <xsl:if test="not(position()=last())">, </xsl:if>
  </xsl:template>

  <xsl:template match="modulelist">
    <xsl:apply-templates select="module"/>
  </xsl:template>

  <xsl:template match="example">
  <blockquote>
  <table cellpadding="10"><tr><td bgcolor="#eeeeee">
     <xsl:apply-templates select="title" mode="print"/>
     <code><xsl:apply-templates/></code>
  </td></tr></table>
  </blockquote>
  </xsl:template>

  <xsl:template match="example/title" mode="print">
     <p align="center"><strong><xsl:apply-templates/></strong></p>
  </xsl:template>
  <xsl:template match="example/title"></xsl:template>

  <xsl:template match="note">
  <blockquote>
  <table><tr><td>
   <xsl:choose>
    <xsl:when test="@type='warning'">
     <!-- Need more formatting -->
     <xsl:attribute name="bgcolor">#ffe5f5</xsl:attribute>
    </xsl:when>
    <xsl:when test="@type='securitywarning'">
     <!-- Need more formatting, how about blink? :-) -->
     <xsl:attribute name="bgcolor">#ffe5f5</xsl:attribute>
    </xsl:when>
    <xsl:otherwise>
     <xsl:attribute name="bgcolor">#e0e5f5</xsl:attribute>
    </xsl:otherwise>
   </xsl:choose>
     <xsl:apply-templates/>
  </td></tr></table>
  </blockquote>
  </xsl:template>
  <xsl:template match="note/title">
     <p align="center"><strong><xsl:apply-templates/></strong></p>
  </xsl:template>

  <xsl:template match="directive">
    <code class="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:if test="@module=/modulesynopsis/name">
        <a class="directive" href="#{$lowerdirective}"><xsl:if 
test="./@type='section'">&lt;</xsl:if><xsl:value-of select="."/><xsl:if 
test="./@type='section'">&gt;</xsl:if></a>
      </xsl:if>
      <xsl:if test="@module!=/modulesynopsis/name">
        <a class="directive" href="{$module}.html#{$lowerdirective}"><xsl:if 
test="./@type='section'">&lt;</xsl:if><xsl:value-of select="."/><xsl:if 
test="./@type='section'">&gt;</xsl:if></a>
      </xsl:if>
    </xsl:if>
    <xsl:if test="not(@module)">
       <xsl:if test="./@type='section'">&lt;</xsl:if><xsl:value-of 
select="."/><xsl:if test="./@type='section'">&gt;</xsl:if>
    </xsl:if>
    </code>
  </xsl:template>

  <xsl:template match="module">
    <code>
     <a href="{.}.html"><xsl:value-of select="."/></a>
    </code>
    <xsl:if test="parent::modulelist">
      <xsl:if test="not(position()=last())">, </xsl:if>
    </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