Subject:xsl:include with local files Author:duane morin Date:30 Mar 2005 03:02 PM
I get my master XSL stylesheet from a directory which will change
depending on the machine (development, testing, production...) I have
some <xsl:include href="foo.xsl"/> statements in there. Although
my books (Kay's XSLT Programmer's Reference, for one) say that just
doing href="foo.xsl" will cause the parser to look for foo.xsl in the
same directory that main.xsl came from, I'm finding this not to be the
case. It appears to be dependent on where I run my Java standalone
application from. I have to copy my sub-XSL files into whatever
directory I run the app from.
Is this a bug in our XSL processor (Xalan), something that should
never have worked to begin with, or a syntax problem where I really
need to say href="file:foo.xsl" or something similar? I do NOT have
an absolute directory, so I cannot do file:///home/application/blah...
Subject:xsl:include with local files Author:Tony Lavinio Date:30 Mar 2005 03:57 PM
1) According to the XSL specification at http://www.w3.org/TR/xslt#include what you are doing is correct.
Unless you have xml:base set, it should resolve relative to the
location of your stylesheet - assuming the way you've told Xalan-J
about your stylesheet includes location information. (For example,
you could grab it, put it into a string, and then feed it to Xalan-J.
In that even, it wouldn't know where the string came from.)
Most likely your problem is that Xalan-J doesn't know the URL of
your stylesheet.
2) Did you try this using the Xalan-J that is built into Stylus?
Does it work there?
3) The version of Xalan-J makes a difference. The current release
at Apache is 2.6.0. The version that comes with the Sun 1.4 JDK is
considerably older (and you didn't state either the version of the
JDK or the version of Xalan-J you are using).
4) If this works inside of Stylus, but doesn't in your application,
you might try the xalan mailing lists.