OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: user.head.contentend patch for docbook-xsl 1.62.4


On Fri, Oct 31, 2003 at 02:31:42PM +0100, W. Borgert wrote:
> Hello,
> 
> I need to include a JavaScript code snippet into all HTML chunks
> for CHM/htmlhelp.  This script is necessary for the MS-HTML Help
> when printing "selected heading and all subtopics".  Without the
> code snippet, other scripts (via <SCRIPT SRC=...> would not be
> found by HTML Help and the look-and-feel of the print-out would
> be wrong.  Bob gave me the very good hint to use the template
> user.head.content, but unfortunately the JavaScript code has to
> be below the HTML link elements, not before.  I therefore made
> a patch introducing a new user.head.contentend, which fits
> perfectly for me.  I use it only in (x)html/chunk-common.xsl,
> maybe it would be better to use it in (x)html/graphics.xsl and
> (x)html/titlepage.xsl as well.  The patch only adds 14 lines, so
> please apply it to docbook-xsl.  Feel free to use a better name
> for the template than user.head.contentend :-)
> 
> Usage example:
> 
> File fix.js:
> 
> <script language="JavaScript" type="text/javascript"><!--
> function nul(){return}
> if(null!=document.styleSheets&&0<document.styleSheets.length)
>   document.write('<'+'SCRIPT LANGUAGE="JavaScript" SRC="'+
>   document.styleSheets[0].href.
>   replace(new RegExp('::[\\\\/:](\\.\\.[\\\\/:])+'),'::/').
>   replace(new RegExp('[^\\\\/:]+$'),'')+'other.js"><'+'/SCRIPT>');
> //--></script>
> 
> In the XSL driver (thanks to Bob Stayton):
> 
> <xsl:template name="user.head.contentend">
>   <link rel="StyleSheet" href="style/my.css"/>
>   <xsl:copy-of select="document('../my.path/fix.js',/)"/>
> </xsl:template>
> 
> The patch is attached.

That would make for *three* user level templates
to generate head content (system.head.content is the
other one).  How about if we just move the
call to the user.head.content template to the
end of the <head> element?  Looking at the
usage in docbook.xsl, I think that was the original
intent anyway:

    <head>
      <xsl:call-template name="system.head.content">
        <xsl:with-param name="node" select="$doc"/>
      </xsl:call-template>
      <xsl:call-template name="head.content">
        <xsl:with-param name="node" select="$doc"/>
      </xsl:call-template>
      <xsl:call-template name="user.head.content">
        <xsl:with-param name="node" select="$doc"/>
      </xsl:call-template>
    </head>

If we do this for the chunking templates, then
you would get the last word using the existing
user.head.content template.

-- 

Bob Stayton                                 400 Encinal Street
Publications Architect                      Santa Cruz, CA  95060
Technical Publications                      voice: (831) 427-7796
The SCO Group                               fax:   (831) 429-1887
                                            email: bobs@sco.com


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]