This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Javascript as an Include file in xsl
- To: "Berent, Tom (MAN-Nashville-Corporate)" <Tom dot Berent at cox dot com>
- Subject: Re: [xsl] Javascript as an Include file in xsl
- From: Jeni Tennison <jeni at jenitennison dot com>
- Date: Wed, 10 Oct 2001 19:13:00 +0100
- CC: "'XSL-List at lists dot mulberrytech dot com'" <XSL-List at lists dot mulberrytech dot com>
- Organization: Jeni Tennison Consulting Ltd
- References: <CC013CDD0CB8D31195BF0004AC4C61840A7D1529@mmscs10.man.cox.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Tom,
> I been brought into an existing project that is XML/XSL based. Even
> with limited XSL experience, I see a huge maintenance nightmare
> evolving. According to the consultants working on the project with
> us, they have found no way to put needed client side JavaScript
> functions into an include file. So all JavaScript functions are
> being duplicated on every page. Since the maintenance of this
> product will fall on my shoulders, I want to find a better solution.
> Is there a way to include a .js file that the XSLT parser will
> accept? Thank you for your time.
It's unclear from your description whether you're talking about
including the Javascript in the *output* of the transformation (which
I assume is HTML) or in the stylesheet itself (i.e. you're using
msxsl:script to get extension functions).
If you're generating HTML, then you can link to an external JavaScript
document by generating a script element in the same way as you would
if you were writing the HTML document directly. In other words, in
your XSLT you should have a literal result element that looks
something like:
<script language="javascript" type="text/javascript"
href="script.js" />
The href is likely to be resolved relative to the XML document that's
being transformed (at a guess), not the stylesheet.
If you're using msxsl:script to define extension functions, then
they're right, msxsl:script doesn't have the facility to point to an
external Javascript file. However, you can put the msxsl:script
element in its own stylesheet (e.g. script.xsl) and then include it
into as many other stylesheets as you like using xsl:include:
<xsl:include href="script.xsl" />
Alternatively, you could use XML entities. Wrap the content of the
Javascript file in a CDATA section (so that you don't have to escape
all the <s and &s within it), and then declare the entity in the
stylesheet that you want to use it in:
<!DOCTYPE xsl:stylesheet [
<!ENTITY script SYSTEM 'script.js'>
]>
and then use &script; to insert the script into the file as desired.
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list