minor optimizations
[util-vserver.git] / util-vserver / doc / configuration-xhtml.xsl
1 <?xml version="1.0" encoding="utf-8"?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                 xmlns="http://www.w3.org/1999/xhtml"
4                 version="1.0">
5
6   <xsl:output method="xml"
7               indent="yes"
8               doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
9               doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
10
11   <xsl:param name="confdir"/>
12   
13   <xsl:template match="/">
14     <html>
15       <xsl:apply-templates/>
16     </html>
17   </xsl:template>
18
19   <xsl:template match="database">
20     <head>
21       <title>The <xsl:value-of select="$confdir"/> directory</title>
22       <link rel="stylesheet" title="LSD"    type="text/css" href="configuration-lsd.css"></link>
23       <link rel="stylesheet" title="boring" type="text/css" href="configuration.css"></link>
24     </head>
25     <body>
26       <h1>The content of the <xsl:value-of select="$confdir"/> directory</h1>
27
28       <ul>
29         <xsl:call-template name="collection">
30           <xsl:with-param name="thisdir"><xsl:value-of select="$confdir"/></xsl:with-param>
31         </xsl:call-template>
32       </ul>
33     </body>
34   </xsl:template>
35
36   <xsl:template name="collection">
37     <xsl:param name="thisdir"/>
38     <xsl:choose>
39       <xsl:when test="count(scalar) + count(link) + count(program) + count(data) + count(hash) + count(list) + count(boolean) > 0">
40         <ul>
41           <xsl:call-template name="dir-iterate">
42             <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
43           </xsl:call-template>
44         </ul>
45       </xsl:when>
46       <xsl:otherwise>
47         <xsl:call-template name="dir-iterate">
48           <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
49         </xsl:call-template>
50       </xsl:otherwise>
51     </xsl:choose>
52   </xsl:template>
53
54   <xsl:template name="dir-iterate">
55     <xsl:param name="thisdir"/>
56     <xsl:apply-templates select="scalar|link|program|data|hash|list|boolean">
57       <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
58       <xsl:sort select="@name"/>
59     </xsl:apply-templates>
60     
61     <xsl:apply-templates select="collection">
62       <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
63       <xsl:sort select="@name"/>
64     </xsl:apply-templates>
65   </xsl:template>
66
67   <xsl:template match="program">
68     <xsl:param name="thisdir"/>
69     <li>
70       <xsl:call-template name="printname">
71         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
72         <xsl:with-param name="style">script</xsl:with-param>
73       </xsl:call-template>
74       <xsl:call-template name="printcontent"/>
75     </li>
76   </xsl:template>
77
78   <xsl:template match="hash">
79     <xsl:param name="thisdir"/>
80     <li>
81       <xsl:call-template name="printname">
82         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
83         <xsl:with-param name="style">hash</xsl:with-param>
84       </xsl:call-template>
85       <xsl:call-template name="printcontent"/>
86     </li>
87   </xsl:template>
88   
89   <xsl:template match="scalar">
90     <xsl:param name="thisdir"/>
91     <li>
92       <xsl:call-template name="printname">
93         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
94         <xsl:with-param name="style">file</xsl:with-param>
95       </xsl:call-template>
96       <xsl:call-template name="printcontent"/>
97     </li>
98   </xsl:template>
99
100   <xsl:template match="data">
101     <xsl:param name="thisdir"/>
102     <li>
103       <xsl:call-template name="printname">
104         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
105         <xsl:with-param name="style">data</xsl:with-param>
106       </xsl:call-template>
107       <xsl:call-template name="printcontent"/>
108     </li>
109   </xsl:template>
110
111   <xsl:template match="list">
112     <xsl:param name="thisdir"/>
113     <li>
114       <xsl:call-template name="printname">
115         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
116         <xsl:with-param name="style">list</xsl:with-param>
117       </xsl:call-template>
118       <xsl:call-template name="printcontent"/>
119     </li>
120   </xsl:template>
121   
122   <xsl:template match="link">
123     <xsl:param name="thisdir"/>
124     <li>
125       <xsl:call-template name="printname">
126         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
127         <xsl:with-param name="style">symlink</xsl:with-param>
128       </xsl:call-template>
129       <xsl:call-template name="printcontent"/>
130     </li>
131   </xsl:template>
132
133   <xsl:template match="boolean">
134     <xsl:param name="thisdir"/>
135     <li>
136       <xsl:call-template name="printname">
137         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
138         <xsl:with-param name="style">boolean</xsl:with-param>
139       </xsl:call-template>
140       <xsl:call-template name="printcontent"/>
141     </li>
142   </xsl:template>
143   
144   <xsl:template match="collection">
145     <xsl:param name="thisdir"/>
146     <li>
147       <xsl:call-template name="printfullname">
148         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
149         <xsl:with-param name="style">directory</xsl:with-param>
150       </xsl:call-template>
151       <xsl:call-template name="printcontent"/>
152
153       <xsl:call-template name="collection">
154         <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/>/<xsl:value-of select="@name"/></xsl:with-param>
155       </xsl:call-template>
156     </li>
157   </xsl:template>
158
159   <xsl:template match="collection" mode="printrpath">
160     <xsl:text>/</xsl:text>
161       <span class="{@type}">
162       <xsl:value-of select="@name"/>
163     </span>
164   </xsl:template>
165   
166   <xsl:template name="printfullname">
167     <xsl:param name="thisdir"/>
168     <xsl:param name="style"/>
169     <span class="{$style}">
170       <xsl:value-of select="$confdir"/>
171       <xsl:apply-templates select="ancestor-or-self::collection" mode="printrpath"/>
172     </span>
173   </xsl:template>
174
175   <xsl:template name="printname">
176     <xsl:param name="thisdir"/>
177     <xsl:param name="style"/>
178     <span class="{$style}" title="{$thisdir}/{@name}">
179       <xsl:value-of select="@name"/>
180     </span>
181   </xsl:template>
182
183   <xsl:template name="printcontent">
184     <br/>
185     <span class="description">
186       <xsl:apply-templates select="description"/>
187     </span>
188   </xsl:template>
189
190   <xsl:template match="ulink">
191     <a href="{@url}"><xsl:apply-templates/></a>
192   </xsl:template>
193
194 </xsl:stylesheet>