1<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 2 xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" 3 exclude-result-prefixes="doc" 4 version="1.0"> 5 6<!-- ******************************************************************** 7 $Id$ 8 ******************************************************************** 9 10 This file is used by htmlhelp.xsl if you want to generate source 11 files for HTML Help. It is based on the XSL DocBook Stylesheet 12 distribution (especially on JavaHelp code) from Norman Walsh. 13 14 ******************************************************************** --> 15 16<!-- ==================================================================== --> 17<xsl:param name="htmlhelp.encoding" select="'iso-8859-1'"/> 18 19<doc:param name="htmlhelp.encoding" xmlns=""> 20<refpurpose>Character encoding to use in files for HTML Help compiler.</refpurpose> 21<refdescription> 22<para>HTML Help Compiler is not UTF-8 aware, so you should always use 23apropriate single-byte encoding here.</para> 24</refdescription> 25</doc:param> 26 27<xsl:param name="suppress.navigation" select="1"/> 28 29<!-- ==================================================================== --> 30 31<xsl:template match="/"> 32 <xsl:apply-templates/> 33 <xsl:call-template name="hhp"/> 34 <xsl:call-template name="hhc"/> 35</xsl:template> 36 37<!-- ==================================================================== --> 38 39<xsl:template name="hhp"> 40 <xsl:call-template name="write.text.chunk"> 41 <xsl:with-param name="filename" select="'htmlhelp.hhp'"/> 42 <xsl:with-param name="method" select="'text'"/> 43 <xsl:with-param name="content"> 44 <xsl:call-template name="hhp-main"/> 45 </xsl:with-param> 46 <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> 47 </xsl:call-template> 48</xsl:template> 49 50<!-- ==================================================================== --> 51<xsl:template name="hhp-main"> 52<xsl:text>[OPTIONS] 53</xsl:text> 54<xsl:if test="//indexterm"> 55<xsl:text>Auto Index=Yes 56</xsl:text></xsl:if> 57<xsl:text>Compatibility=1.1 or later 58Compiled file=htmlhelp.chm 59Contents file=toc.hhc 60Default topic=</xsl:text> 61 <xsl:call-template name="make-relative-filename"> 62 <xsl:with-param name="base.dir" select="$base.dir"/> 63 <xsl:with-param name="base.name"> 64 <xsl:apply-templates mode="chunk-filename" select="/"/> 65 </xsl:with-param> 66 </xsl:call-template> 67<xsl:text> 68Display compile progress=No 69Full-text search=Yes 70Language=</xsl:text> 71<xsl:if test="//@lang"> 72 <xsl:variable name="lang" select="//@lang[1]"/> 73 <xsl:value-of select="document('langcodes.xml')//gentext[@lang=string($lang)]"/> 74</xsl:if> 75<xsl:if test="not(//@lang)"> 76 <xsl:text>0x0409 English (United States) 77</xsl:text></xsl:if> 78<xsl:text> 79Title=</xsl:text><xsl:value-of select="//title[1]"/> 80<xsl:text> 81 82[FILES] 83</xsl:text> 84<xsl:apply-templates mode="enumerate-files"/> 85</xsl:template> 86<!-- ==================================================================== --> 87 88<xsl:template match="set|book|part|preface|chapter|appendix 89 |article 90 |reference|refentry 91 |sect1[position()>1] 92 |section[position()>1 and name(parent::*) != 'section'] 93 |book/glossary|article/glossary 94 |book/bibliography|article/bibliography 95 |colophon" 96 mode="enumerate-files"> 97 <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable> 98 <xsl:if test="$ischunk='1'"> 99 <xsl:call-template name="make-relative-filename"> 100 <xsl:with-param name="base.dir" select="$base.dir"/> 101 <xsl:with-param name="base.name"> 102 <xsl:apply-templates mode="chunk-filename" select="."/> 103 </xsl:with-param> 104 </xsl:call-template> 105 <xsl:text> </xsl:text> 106 </xsl:if> 107 <xsl:apply-templates select="*" mode="enumerate-files"/> 108</xsl:template> 109 110<xsl:template match="text()" mode="enumerate-files"> 111</xsl:template> 112 113<!-- ==================================================================== --> 114 115<!-- Following templates are not nice. It is because MS help compiler is unable 116 to process correct HTML files. We must generate following weird 117 stuff instead. --> 118 119<xsl:template name="hhc"> 120 <xsl:call-template name="write.text.chunk"> 121 <xsl:with-param name="filename" select="'toc.hhc'"/> 122 <xsl:with-param name="method" select="'text'"/> 123 <xsl:with-param name="content"> 124 <xsl:call-template name="hhc-main"/> 125 </xsl:with-param> 126 <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> 127 </xsl:call-template> 128</xsl:template> 129 130<xsl:template name="hhc-main"> 131 <xsl:text><HTML> 132<HEAD> 133</HEAD> 134<BODY> 135<OBJECT type="text/site properties"> 136 <param name="ImageType" value="Folder"> 137</OBJECT> 138<UL> 139</xsl:text> 140 <xsl:apply-templates select="." mode="hhc"/> 141<xsl:text></UL> 142</BODY> 143</HTML></xsl:text> 144</xsl:template> 145 146<xsl:template match="set" mode="hhc"> 147 <xsl:variable name="title"> 148 <xsl:apply-templates select="." mode="title.markup"/> 149 </xsl:variable> 150 151 <xsl:text><LI> <OBJECT type="text/sitemap"> 152 <param name="Name" value="</xsl:text> 153 <xsl:value-of select="$title"/> 154 <xsl:text>"> 155 <param name="Local" value="</xsl:text> 156 <xsl:call-template name="href.target.with.base.dir"/> 157 <xsl:text>"> 158 </OBJECT></xsl:text> 159 <xsl:if test="book"> 160 <xsl:text><UL></xsl:text> 161 <xsl:apply-templates select="book" mode="hhc"/> 162 <xsl:text></UL></xsl:text> 163 </xsl:if> 164</xsl:template> 165 166<xsl:template match="book" mode="hhc"> 167 <xsl:variable name="title"> 168 <xsl:apply-templates select="." mode="title.markup"/> 169 </xsl:variable> 170 171 <xsl:text><LI> <OBJECT type="text/sitemap"> 172 <param name="Name" value="</xsl:text> 173 <xsl:value-of select="$title"/> 174 <xsl:text>"> 175 <param name="Local" value="</xsl:text> 176 <xsl:call-template name="href.target.with.base.dir"/> 177 <xsl:text>"> 178 </OBJECT></xsl:text> 179 <xsl:if test="part|reference|preface|chapter|appendix|article|colophon"> 180 <xsl:text><UL></xsl:text> 181 <xsl:apply-templates select="part|reference|preface|chapter|appendix|article|colophon" 182 mode="hhc"/> 183 <xsl:text></UL></xsl:text> 184 </xsl:if> 185</xsl:template> 186 187<xsl:template match="part|reference|preface|chapter|appendix|article" 188 mode="hhc"> 189 <xsl:variable name="title"> 190 <xsl:apply-templates select="." mode="title.markup"/> 191 </xsl:variable> 192 193 <xsl:text><LI> <OBJECT type="text/sitemap"> 194 <param name="Name" value="</xsl:text> 195 <xsl:value-of select="$title"/> 196 <xsl:text>"> 197 <param name="Local" value="</xsl:text> 198 <xsl:call-template name="href.target.with.base.dir"/> 199 <xsl:text>"> 200 </OBJECT></xsl:text> 201 <xsl:if test="reference|preface|chapter|appendix|refentry|section|sect1"> 202 <xsl:text><UL></xsl:text> 203 <xsl:apply-templates 204 select="reference|preface|chapter|appendix|refentry|section|sect1" 205 mode="hhc"/> 206 <xsl:text></UL></xsl:text> 207 </xsl:if> 208</xsl:template> 209 210<xsl:template match="section" mode="hhc"> 211 <xsl:variable name="title"> 212 <xsl:apply-templates select="." mode="title.markup"/> 213 </xsl:variable> 214 215 <xsl:text><LI> <OBJECT type="text/sitemap"> 216 <param name="Name" value="</xsl:text> 217 <xsl:value-of select="$title"/> 218 <xsl:text>"> 219 <param name="Local" value="</xsl:text> 220 <xsl:call-template name="href.target.with.base.dir"/> 221 <xsl:text>"> 222 </OBJECT></xsl:text> 223 <xsl:if test="section"> 224 <xsl:text><UL></xsl:text> 225 <xsl:apply-templates select="section" mode="hhc"/> 226 <xsl:text></UL></xsl:text> 227 </xsl:if> 228</xsl:template> 229 230<xsl:template match="sect1" mode="hhc"> 231 <xsl:variable name="title"> 232 <xsl:apply-templates select="." mode="title.markup"/> 233 </xsl:variable> 234 235 <xsl:text><LI> <OBJECT type="text/sitemap"> 236 <param name="Name" value="</xsl:text> 237 <xsl:value-of select="$title"/> 238 <xsl:text>"> 239 <param name="Local" value="</xsl:text> 240 <xsl:call-template name="href.target.with.base.dir"/> 241 <xsl:text>"> 242 </OBJECT></xsl:text> 243 <xsl:if test="sect2"> 244 <xsl:text><UL></xsl:text> 245 <xsl:apply-templates select="sect2" 246 mode="hhc"/> 247 <xsl:text></UL></xsl:text> 248 </xsl:if> 249</xsl:template> 250 251<xsl:template match="sect2" mode="hhc"> 252 <xsl:variable name="title"> 253 <xsl:apply-templates select="." mode="title.markup"/> 254 </xsl:variable> 255 256 <xsl:text><LI> <OBJECT type="text/sitemap"> 257 <param name="Name" value="</xsl:text> 258 <xsl:value-of select="$title"/> 259 <xsl:text>"> 260 <param name="Local" value="</xsl:text> 261 <xsl:call-template name="href.target.with.base.dir"/> 262 <xsl:text>"> 263 </OBJECT></xsl:text> 264 <xsl:if test="sect3"> 265 <xsl:text><UL></xsl:text> 266 <xsl:apply-templates select="sect3" 267 mode="hhc"/> 268 <xsl:text></UL></xsl:text> 269 </xsl:if> 270</xsl:template> 271 272<xsl:template match="sect3" mode="hhc"> 273 <xsl:variable name="title"> 274 <xsl:apply-templates select="." mode="title.markup"/> 275 </xsl:variable> 276 277 <xsl:text><LI> <OBJECT type="text/sitemap"> 278 <param name="Name" value="</xsl:text> 279 <xsl:value-of select="$title"/> 280 <xsl:text>"> 281 <param name="Local" value="</xsl:text> 282 <xsl:call-template name="href.target.with.base.dir"/> 283 <xsl:text>"> 284 </OBJECT></xsl:text> 285 <xsl:if test="sect4"> 286 <xsl:text><UL></xsl:text> 287 <xsl:apply-templates select="sect4" 288 mode="hhc"/> 289 <xsl:text></UL></xsl:text> 290 </xsl:if> 291</xsl:template> 292 293<xsl:template match="sect4" mode="hhc"> 294 <xsl:variable name="title"> 295 <xsl:apply-templates select="." mode="title.markup"/> 296 </xsl:variable> 297 298 <xsl:text><LI> <OBJECT type="text/sitemap"> 299 <param name="Name" value="</xsl:text> 300 <xsl:value-of select="$title"/> 301 <xsl:text>"> 302 <param name="Local" value="</xsl:text> 303 <xsl:call-template name="href.target.with.base.dir"/> 304 <xsl:text>"> 305 </OBJECT></xsl:text> 306 <xsl:if test="sect5"> 307 <xsl:text><UL></xsl:text> 308 <xsl:apply-templates select="sect5" 309 mode="hhc"/> 310 <xsl:text></UL></xsl:text> 311 </xsl:if> 312</xsl:template> 313 314<xsl:template match="sect5|refentry|colophon" mode="hhc"> 315 <xsl:variable name="title"> 316 <xsl:apply-templates select="." mode="title.markup"/> 317 </xsl:variable> 318 319 <xsl:text><LI> <OBJECT type="text/sitemap"> 320 <param name="Name" value="</xsl:text> 321 <xsl:value-of select="$title"/> 322 <xsl:text>"> 323 <param name="Local" value="</xsl:text> 324 <xsl:call-template name="href.target.with.base.dir"/> 325 <xsl:text>"> 326 </OBJECT></xsl:text> 327</xsl:template> 328 329<!-- ==================================================================== --> 330 331<xsl:template match="indexterm"> 332 333 <xsl:variable name="text"> 334 <xsl:value-of select="primary"/> 335 <xsl:if test="secondary"> 336 <xsl:text>, </xsl:text> 337 <xsl:value-of select="secondary"/> 338 </xsl:if> 339 <xsl:if test="tertiary"> 340 <xsl:text>, </xsl:text> 341 <xsl:value-of select="tertiary"/> 342 </xsl:if> 343 </xsl:variable> 344 345 <OBJECT type="application/x-oleobject" 346 classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e"> 347 <param name="Keyword" value="{$text}"/> 348 </OBJECT> 349</xsl:template> 350 351<!-- ==================================================================== --> 352 353<xsl:template name="href.target.with.base.dir"> 354 <xsl:value-of select="$base.dir"/> 355 <xsl:call-template name="href.target"/> 356</xsl:template> 357 358 359</xsl:stylesheet> 360