newapi.xsl revision c72f9fd1f031f129d27c76eeb50b0cbc7aa1cc5c
1<?xml version="1.0"?> 2<!-- 3 Stylesheet to generate the HTML documentation from an XML API descriptions: 4 xsltproc newapi.xsl libxml2-api.xml 5 6 Daniel Veillard 7--> 8<xsl:stylesheet version="1.0" 9 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 10 xmlns:exsl="http://exslt.org/common" 11 extension-element-prefixes="exsl" 12 exclude-result-prefixes="exsl"> 13 14 <!-- Import the resto of the site stylesheets --> 15 <xsl:import href="site.xsl"/> 16 17 <!-- Generate XHTML-1.0 transitional --> 18 <xsl:output method="xml" encoding="ISO-8859-1" indent="yes" 19 doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 20 doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> 21 22 <!-- Build keys for all symbols --> 23 <xsl:key name="symbols" match="/api/symbols/*" use="@name"/> 24 25 <!-- the target directory --> 26 <xsl:variable name="htmldir">newhtml</xsl:variable> 27 28 <xsl:template name="dumptext"> 29 <xsl:param name="text"/> 30 <xsl:value-of select="$text"/> 31 </xsl:template> 32 33 <xsl:template match="macro" mode="toc"> 34 <xsl:text>#define </xsl:text><a href="#{@name}"><xsl:value-of select="@name"/></a><xsl:text> 35 36</xsl:text> 37 </xsl:template> 38 39 <xsl:template match="struct" mode="toc"> 40 <xsl:text>Structure </xsl:text><a name="{@name}"><xsl:value-of select="@name"/></a><br/> 41 <xsl:value-of select="@type"/><xsl:text> { 42</xsl:text> 43 <xsl:for-each select="field"> 44 <xsl:text> </xsl:text> 45 <xsl:value-of select="@type"/><xsl:text>	</xsl:text> 46 <xsl:value-of select="@name"/><xsl:text>	: </xsl:text> 47 <xsl:value-of select="substring(@info, 1, 50)"/><xsl:text> 48</xsl:text> 49 </xsl:for-each> 50 <xsl:text>} 51 52</xsl:text> 53 </xsl:template> 54 55 <xsl:template match="macro"> 56 <xsl:variable name="name" select="string(@name)"/> 57 <h3><a name="{$name}"></a>Macro: <xsl:value-of select="$name"/></h3> 58 <pre><xsl:text>#define </xsl:text><xsl:value-of select="$name"/></pre> 59 <p> 60 <xsl:call-template name="dumptext"> 61 <xsl:with-param name="text" select="info"/> 62 </xsl:call-template> 63 </p><xsl:text> 64</xsl:text> 65 </xsl:template> 66 67 <xsl:template match="function" mode="toc"> 68 <xsl:call-template name="dumptext"> 69 <xsl:with-param name="text" select="return/@type"/> 70 </xsl:call-template> 71 <xsl:text>	</xsl:text> 72 <a href="#{@name}"><xsl:value-of select="@name"/></a> 73 <xsl:text>	(</xsl:text> 74 <xsl:for-each select="arg"> 75 <xsl:call-template name="dumptext"> 76 <xsl:with-param name="text" select="@type"/> 77 </xsl:call-template> 78 <xsl:text> </xsl:text> 79 <xsl:value-of select="@name"/> 80 <xsl:if test="position() != last()"> 81 <xsl:text>, </xsl:text><br/><xsl:text>				</xsl:text> 82 </xsl:if> 83 </xsl:for-each> 84 <xsl:text>)</xsl:text><br/> 85 <xsl:text> 86</xsl:text> 87 </xsl:template> 88 89 <xsl:template match="function"> 90 <xsl:variable name="name" select="string(@name)"/> 91 <h3><a name="{$name}"></a>Function: <xsl:value-of select="$name"/></h3> 92 <pre class="programlisting"> 93 <xsl:call-template name="dumptext"> 94 <xsl:with-param name="text" select="return/@type"/> 95 </xsl:call-template> 96 <xsl:text>	</xsl:text> 97 <xsl:value-of select="@name"/> 98 <xsl:text>	(</xsl:text> 99 <xsl:for-each select="arg"> 100 <xsl:call-template name="dumptext"> 101 <xsl:with-param name="text" select="@type"/> 102 </xsl:call-template> 103 <xsl:text> </xsl:text> 104 <xsl:value-of select="@name"/> 105 <xsl:if test="position() != last()"> 106 <xsl:text>, </xsl:text><br/><xsl:text>				</xsl:text> 107 </xsl:if> 108 </xsl:for-each> 109 <xsl:text>)</xsl:text><br/> 110 <xsl:text> 111</xsl:text> 112 </pre> 113 <p> 114 <xsl:call-template name="dumptext"> 115 <xsl:with-param name="text" select="info"/> 116 </xsl:call-template> 117 </p><xsl:text> 118</xsl:text> 119 <div class="variablelist"><table border="0"><col align="left"/><tbody> 120 <xsl:for-each select="arg"> 121 <tr> 122 <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td> 123 <td><xsl:value-of select="@info"/></td> 124 </tr> 125 </xsl:for-each> 126 <xsl:if test="return/@info"> 127 <tr> 128 <td><span class="term"><i><tt>Returns</tt></i>:</span></td> 129 <td><xsl:value-of select="return/@info"/></td> 130 </tr> 131 </xsl:if> 132 </tbody></table></div> 133 </xsl:template> 134 135 <xsl:template match="exports" mode="toc"> 136 <xsl:apply-templates select="key('symbols', string(@symbol))" mode="toc"/> 137 </xsl:template> 138 139 <xsl:template match="exports"> 140 <xsl:apply-templates select="key('symbols', string(@symbol))"/> 141 </xsl:template> 142 143 <xsl:template match="file"> 144 <xsl:variable name="name" select="@name"/> 145 <xsl:variable name="title">Module <xsl:value-of select="$name"/> from <xsl:value-of select="/api/@name"/></xsl:variable> 146 <xsl:document href="{$htmldir}/libxml-{$name}.html" method="xml" encoding="ISO-8859-1" 147 doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 148 doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 149 <html> 150 <head> 151 <xsl:call-template name="style"/> 152 <title><xsl:value-of select="$title"/></title> 153 </head> 154 <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000"> 155 <xsl:call-template name="titlebox"> 156 <xsl:with-param name="title" select="$title"/> 157 </xsl:call-template> 158 <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"> 159 <tr> 160 <td bgcolor="#8b7765"> 161 <table border="0" cellspacing="0" cellpadding="2" width="100%"> 162 <tr> 163 <td valign="top" width="200" bgcolor="#8b7765"> 164 <xsl:call-template name="toc"/> 165 </td> 166 <td valign="top" bgcolor="#8b7765"> 167 <table border="0" cellspacing="0" cellpadding="1" width="100%"> 168 <tr> 169 <td> 170 <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"> 171 <tr> 172 <td> 173 <table border="0" cellpadding="3" cellspacing="1" width="100%"> 174 <tr> 175 <td bgcolor="#fffacd"> 176 <h2>Table of Contents</h2> 177 <pre> 178 <xsl:apply-templates select="exports" mode="toc"/> 179 </pre> 180 <h2>Description</h2> 181 <xsl:text> 182</xsl:text> 183 <xsl:apply-templates select="exports"/> 184 <p><a href="bugs.html">Daniel Veillard</a></p> 185 </td> 186 </tr> 187 </table> 188 </td> 189 </tr> 190 </table> 191 </td> 192 </tr> 193 </table> 194 </td> 195 </tr> 196 </table> 197 </td> 198 </tr> 199 </table> 200 </body> 201 </html> 202 </xsl:document> 203 </xsl:template> 204 205 <xsl:template match="file" mode="toc"> 206 <xsl:variable name="name" select="@name"/> 207 <li> <a href="libxml-{$name}.html"><xsl:value-of select="$name"/></a></li> 208 </xsl:template> 209 210 <xsl:template match="/"> 211 <xsl:variable name="title">Reference Manual for <xsl:value-of select="/api/@name"/></xsl:variable> 212 <xsl:document href="{$htmldir}/index.html" method="xml" encoding="ISO-8859-1" 213 doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 214 doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 215 <html> 216 <head> 217 <xsl:call-template name="style"/> 218 <title><xsl:value-of select="$title"/></title> 219 </head> 220 <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000"> 221 <xsl:call-template name="titlebox"> 222 <xsl:with-param name="title" select="$title"/> 223 </xsl:call-template> 224 <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"> 225 <tr> 226 <td bgcolor="#8b7765"> 227 <table border="0" cellspacing="0" cellpadding="2" width="100%"> 228 <tr> 229 <td valign="top" width="200" bgcolor="#8b7765"> 230 <xsl:call-template name="toc"/> 231 </td> 232 <td valign="top" bgcolor="#8b7765"> 233 <table border="0" cellspacing="0" cellpadding="1" width="100%"> 234 <tr> 235 <td> 236 <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"> 237 <tr> 238 <td> 239 <table border="0" cellpadding="3" cellspacing="1" width="100%"> 240 <tr> 241 <td bgcolor="#fffacd"> 242 <h2>Table of Contents</h2> 243 <ul> 244 <xsl:apply-templates select="/api/files/file" mode="toc"/> 245 </ul> 246 <p><a href="bugs.html">Daniel Veillard</a></p> 247 </td> 248 </tr> 249 </table> 250 </td> 251 </tr> 252 </table> 253 </td> 254 </tr> 255 </table> 256 </td> 257 </tr> 258 </table> 259 </td> 260 </tr> 261 </table> 262 </body> 263 </html> 264 </xsl:document> 265 <!-- now build the file for each of the modules --> 266 <xsl:apply-templates select="/api/files/file"/> 267 </xsl:template> 268 269</xsl:stylesheet> 270