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:

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

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]