254 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <xsl:stylesheet
 | |
|     version     = "1.0"
 | |
|     xmlns       = "http://www.w3.org/1999/xhtml"
 | |
|     xmlns:xsl   = "http://www.w3.org/1999/XSL/Transform"
 | |
| >
 | |
|     <xsl:output
 | |
|         method      = "xml"
 | |
|         encoding    = "UTF-8"
 | |
|         doctype-public = "-//W3C//DTD XHTML 1.0 Transitional//EN"
 | |
|         doctype-system = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
 | |
|         indent = "no"
 | |
|         media-type = "text/html"
 | |
|     />
 | |
|     <xsl:param name="css" select="'styles/plain.css'"/>
 | |
|     <xsl:param name="title" select="'Configuration Documentation'"/>
 | |
| 
 | |
|     <xsl:variable name="typeLookup"  select="document('../types.xml')/types" />
 | |
|     <xsl:variable name="usageLookup" select="document('../usage.xml')/usage" />
 | |
| 
 | |
|     <!-- Twiddle this variable to get the columns as even as possible -->
 | |
|     <xsl:variable name="maxNumberAdjust" select="2" />
 | |
| 
 | |
|     <xsl:template match="/">
 | |
|         <html lang="en" xml:lang="en">
 | |
|             <head>
 | |
|                 <title><xsl:value-of select="$title" /> - <xsl:value-of select="/configdoc/title" /></title>
 | |
|                 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 | |
|                 <link rel="stylesheet" type="text/css" href="{$css}" />
 | |
|             </head>
 | |
|             <body>
 | |
|                 <div id="content">
 | |
|                     <div id="library"><xsl:value-of select="/configdoc/title" /></div>
 | |
|                     <h1><xsl:value-of select="$title" /></h1>
 | |
|                     <div id="tocContainer">
 | |
|                         <h2>Table of Contents</h2>
 | |
|                         <ul id="toc">
 | |
|                             <xsl:apply-templates mode="toc">
 | |
|                                 <xsl:with-param name="overflowNumber" select="round(count(/configdoc/namespace) div 2) + $maxNumberAdjust" />
 | |
|                             </xsl:apply-templates>
 | |
|                         </ul>
 | |
|                     </div>
 | |
|                     <div id="typesContainer">
 | |
|                         <h2>Types</h2>
 | |
|                         <xsl:apply-templates select="$typeLookup" mode="types" />
 | |
|                     </div>
 | |
|                     <xsl:apply-templates />
 | |
|                 </div>
 | |
|             </body>
 | |
|         </html>
 | |
|     </xsl:template>
 | |
| 
 | |
|     <xsl:template match="type" mode="types">
 | |
|         <div class="type-block">
 | |
|             <xsl:attribute name="id">type-<xsl:value-of select="@id" /></xsl:attribute>
 | |
|             <h3><code><xsl:value-of select="@id" /></code>: <xsl:value-of select="@name" /></h3>
 | |
|             <div class="type-description">
 | |
|                 <xsl:copy-of xmlns:xhtml="http://www.w3.org/1999/xhtml" select="xhtml:div/node()" />
 | |
|             </div>
 | |
|         </div>
 | |
|     </xsl:template>
 | |
| 
 | |
|     <xsl:template match="title" mode="toc" />
 | |
|     <xsl:template match="namespace" mode="toc">
 | |
|         <xsl:param name="overflowNumber" />
 | |
|         <xsl:variable name="number"><xsl:number level="single" /></xsl:variable>
 | |
|         <xsl:variable name="directiveNumber"><xsl:number level="any" count="directive" /></xsl:variable>
 | |
|         <xsl:if test="count(directive)>0">
 | |
|             <li>
 | |
|                 <!-- BEGIN multicolumn code -->
 | |
|                 <xsl:if test="$number >= $overflowNumber">
 | |
|                     <xsl:attribute name="class">col-2</xsl:attribute>
 | |
|                 </xsl:if>
 | |
|                 <xsl:if test="$number = $overflowNumber">
 | |
|                     <xsl:attribute name="style">margin-top:-<xsl:value-of select="($number * 2 + $directiveNumber - 3) * 1.2" />em</xsl:attribute>
 | |
|                 </xsl:if>
 | |
|                 <!-- END multicolumn code -->
 | |
|                 <a href="#{@id}"><xsl:value-of select="name" /></a>
 | |
|                 <ul>
 | |
|                     <xsl:apply-templates select="directive" mode="toc">
 | |
|                         <xsl:with-param name="overflowNumber" select="$overflowNumber" />
 | |
|                     </xsl:apply-templates>
 | |
|                 </ul>
 | |
|                 <xsl:if test="$number + 1 = $overflowNumber">
 | |
|                     <div class="col-l" />
 | |
|                 </xsl:if>
 | |
|             </li>
 | |
|         </xsl:if>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="directive" mode="toc">
 | |
|         <xsl:variable name="number">
 | |
|             <xsl:number level="any" count="directive|namespace" />
 | |
|         </xsl:variable>
 | |
|         <xsl:if test="not(deprecated)">
 | |
|             <li>
 | |
|                 <a href="#{@id}"><xsl:value-of select="name" /></a>
 | |
|             </li>
 | |
|         </xsl:if>
 | |
|     </xsl:template>
 | |
| 
 | |
|     <xsl:template match="title" />
 | |
| 
 | |
|     <xsl:template match="namespace">
 | |
|         <div class="namespace">
 | |
|             <xsl:apply-templates />
 | |
|             <xsl:if test="count(directive)=0">
 | |
|                 <p>No configuration directives defined for this namespace.</p>
 | |
|             </xsl:if>
 | |
|         </div>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="namespace/name">
 | |
|         <h2 id="{../@id}"><xsl:value-of select="." /></h2>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="namespace/description">
 | |
|         <div class="description">
 | |
|             <xsl:copy-of xmlns:xhtml="http://www.w3.org/1999/xhtml" select="xhtml:div/node()" />
 | |
|         </div>
 | |
|     </xsl:template>
 | |
| 
 | |
|     <xsl:template match="directive">
 | |
|         <div>
 | |
|             <xsl:attribute name="class"><!--
 | |
|                 -->directive<!--
 | |
|                 --><xsl:if test="deprecated"> deprecated</xsl:if><!--
 | |
|             --></xsl:attribute>
 | |
|             <xsl:apply-templates>
 | |
|                 <xsl:with-param name="id" select="@id" />
 | |
|             </xsl:apply-templates>
 | |
|         </div>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="directive/name">
 | |
|         <xsl:param name="id" />
 | |
|         <xsl:apply-templates select="../aliases/alias" mode="anchor" />
 | |
|         <h3 id="{$id}"><xsl:value-of select="$id" /></h3>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="alias" mode="anchor">
 | |
|         <a id="{.}"></a>
 | |
|     </xsl:template>
 | |
| 
 | |
|     <!-- Do not pass through -->
 | |
|     <xsl:template match="alias"></xsl:template>
 | |
| 
 | |
|     <xsl:template match="directive/constraints">
 | |
|         <xsl:param name="id" />
 | |
|         <table class="constraints">
 | |
|             <xsl:apply-templates />
 | |
|             <xsl:if test="../aliases/alias">
 | |
|                 <xsl:apply-templates select="../aliases" mode="constraints" />
 | |
|             </xsl:if>
 | |
|             <xsl:apply-templates select="$usageLookup/directive[@id=$id]" />
 | |
|         </table>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="directive/aliases" mode="constraints">
 | |
|         <tr>
 | |
|             <th>Aliases</th>
 | |
|             <td>
 | |
|                 <xsl:for-each select="alias">
 | |
|                     <xsl:if test="position()>1">, </xsl:if>
 | |
|                     <xsl:value-of select="." />
 | |
|                 </xsl:for-each>
 | |
|             </td>
 | |
|         </tr>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="directive/description">
 | |
|         <div class="description">
 | |
|             <xsl:copy-of xmlns:xhtml="http://www.w3.org/1999/xhtml" select="xhtml:div/node()" />
 | |
|         </div>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="directive/deprecated">
 | |
|         <div class="deprecated-notice">
 | |
|             <strong>Warning:</strong>
 | |
|             This directive was deprecated in version <xsl:value-of select="version" />.
 | |
|             <a href="#{use}">%<xsl:value-of select="use" /></a> should be used instead.
 | |
|         </div>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="usage/directive">
 | |
|         <tr>
 | |
|             <th>Used in</th>
 | |
|             <td>
 | |
|                 <ul>
 | |
|                     <xsl:apply-templates />
 | |
|                 </ul>
 | |
|             </td>
 | |
|         </tr>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="usage/directive/file">
 | |
|         <li>
 | |
|             <em><xsl:value-of select="@name" /></em> on line<xsl:if test="count(line)>1">s</xsl:if>
 | |
|             <xsl:text> </xsl:text>
 | |
|             <xsl:for-each select="line">
 | |
|                 <xsl:if test="position()>1">, </xsl:if>
 | |
|                 <xsl:value-of select="." />
 | |
|             </xsl:for-each>
 | |
|         </li>
 | |
|     </xsl:template>
 | |
| 
 | |
|     <xsl:template match="constraints/version">
 | |
|         <tr>
 | |
|             <th>Version added</th>
 | |
|             <td><xsl:value-of select="." /></td>
 | |
|         </tr>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="constraints/type">
 | |
|         <tr>
 | |
|             <th>Type</th>
 | |
|             <td>
 | |
|                 <xsl:variable name="type" select="text()" />
 | |
|                 <xsl:attribute name="class">type type-<xsl:value-of select="$type" /></xsl:attribute>
 | |
|                 <a>
 | |
|                     <xsl:attribute name="href">#type-<xsl:value-of select="$type" /></xsl:attribute>
 | |
|                     <xsl:value-of select="$typeLookup/type[@id=$type]/@name" />
 | |
|                     <xsl:if test="@allow-null='yes'">
 | |
|                         (or null)
 | |
|                     </xsl:if>
 | |
|                 </a>
 | |
|             </td>
 | |
|         </tr>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="constraints/allowed">
 | |
|         <tr>
 | |
|             <th>Allowed values</th>
 | |
|             <td>
 | |
|                 <xsl:for-each select="value"><!--
 | |
|                  --><xsl:if test="position()>1">, </xsl:if>
 | |
|                     "<xsl:value-of select="." />"<!--
 | |
|              --></xsl:for-each>
 | |
|             </td>
 | |
|         </tr>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="constraints/default">
 | |
|         <tr>
 | |
|             <th>Default</th>
 | |
|             <td><pre><xsl:value-of select="." xml:space="preserve" /></pre></td>
 | |
|         </tr>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="constraints/external">
 | |
|         <tr>
 | |
|             <th>External deps</th>
 | |
|             <td>
 | |
|                 <ul>
 | |
|                     <xsl:apply-templates />
 | |
|                 </ul>
 | |
|             </td>
 | |
|         </tr>
 | |
|     </xsl:template>
 | |
|     <xsl:template match="constraints/external/project">
 | |
|         <li><xsl:value-of select="." /></li>
 | |
|     </xsl:template>
 | |
| 
 | |
| </xsl:stylesheet>
 | |
| 
 | |
| <!-- vim: et sw=4 sts=4
 | |
| -->
 | 
