RE: [xsl] <xsl:include> using relative paths and Saxon 8

Subject: RE: [xsl] <xsl:include> using relative paths and Saxon 8
From: "Chris Ward" <cward@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 20 Jan 2006 17:21:21 -0000
> The reason it fails is that when it's a Source its concept of
> a location depends on how its created - if its reading from a
> file on disk then the location is known, if its reading from
> memory then it doesnt have a location, so you have to provide
> one with setSystemId().
>
> If the Source was created using a File then the systemId is
> taken from the File (which is why it worked then), but as the
> code was modified to use urlConn.getInputStream() the
> systemId gets lost, which is why you have to set it manually.
>

Ah - I get you.  I've never encountered this before.

It's better now but still not working.

It still seems to be confused.  Remember I am passing it an http:// url
to a
an XSL file which does a

	<xsl:include href="Common.xsl"/>

the responsse is...

========================================================================
====================

DEBUG : XSLTUtils.newTransformer(http://<ip
address>:8080/lisa/jnlp/TestXLST2.0.xsl)

Error at xsl:include on line 6 of file:///lisa/jnlp/TestXLST2.0.xsl:
  XTSE0165: java.io.FileNotFoundException: \lisa\jnlp\Common.xsl (The
system cannot find the
  path specified)
Problem loading XSLT: Failed to compile stylesheet. 1 error detected.
No params specified

========================================================================
====================

It seems to be going from http: to file: and missing the server path.

I expect I'm doing something cockeyed.

Here's my change code...


    public static synchronized Transformer newTransformer(String
xsltUrl) throws
        TransformerConfigurationException {

                URL url = new URL(xsltUrl);

			<blah blah blah>

                InputStream is = urlConn.getInputStream();
                Source xslSource = new StreamSource(is);
                xslSource.setSystemId(xsltUrl);  /////////// NEW NEW NEW
NEW

                TransformerFactory transFact =
TransformerFactory.newInstance();
                Templates templates = transFact.newTemplates(xslSource);


I tried the

                xslSource.setSystemId(url.getPathI());

but that had similar problems (although it was still "more right" than
before)

Current Thread