xsl-list
[Top] [All Lists]

RE: [xsl] resolving relative path without base

2007-05-30 02:48:31
I would expect that when you call setSystemID() on the StreamSource, the
URIResolver would see that value in the "base" argument.

What product are you using?

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: Kai Hackemesser [mailto:kaha(_at_)gmx(_dot_)de] 
Sent: 30 May 2007 09:53
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] resolving relative path without base

Hi, Michael,

I tried that but wasn't successful. I have added an URI 
resolver to the transformer factory, because I want to lookup 
the xsl sources from different jar files. As you told I'v set 
systemID from the xsl source to an appropriate value, but the 
uri resolver get called with base=null and so I can't find it 
because href is an relative URI ("../../project.xsl"). How do 
I get my resolve method called with base != null, or href not 
relative?

Ciao!
Kai

Michael Kay schrieb:
Use StreamSource.setSystemId() to define the base URI.

Michael Kay
http://www.saxonica.com/ 

  
-----Original Message-----
From: Kai Hackemesser [mailto:kaha(_at_)gmx(_dot_)de] 
Sent: 29 May 2007 16:43
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] resolving relative path without base

Thanks, I tried that and it looks good.

But now I have a problem with relative links. My task is as 
follows: I have to create a xsl depending on some xml input. 
The resulting xsl file will import another xsl (depending on 
input from first xml file).

This is my code so far:

// loading preprocess XSL
StreamSource src = new
StreamSource(getClass().getResourceAsStream("/lrPreTransformHt
ml.xsl"));
// loading xml
StreamSource xml = new StreamSource(new 
ByteArrayInputStream(out.toByteArray()));
StreamResult result = new StreamResult(outRes); // create 
Transformer from factory and transform.
getTransformer(src).transform(xml,result);
// transform again and display

htmlPane.setText(transform(out.toByteArray(),outRes.toByteArray()));

The problem currently appearing is that the xsl file imported 
into the preprocess-created xsl stream also imports a xsl 
file - and since I now have only a ByteStream as Source, I 
lost the relativeness to that imported file. Is there another 
way than giving an absolute address in that import? Like 
setting a base url in FOP?

Kind regards,
Kai

M. David Peterson schrieb:
    
On Tue, 29 May 2007 06:35:47 -0600, Kai Hackemesser 
      
<kaha(_at_)gmx(_dot_)de> wrote:
    
Has anybody seen an example how to create xsl output with xsl?
        
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
  <xsl:template match="/">
    <xsl:element name="xsl:stylesheet">
      <xsl:attribute 

ame="xmlns:xsl">http://www.w3.org/1999/XSL/Transform</xsl:attribute>
    
      <xsl:attribute name="version">1.0</xsl:attribute>
      <xsl:element name="xsl:template">
        <xsl:attribute name="match">/</xsl:attribute>
        <xsl:element name="xsl:apply-templates"/>
      </xsl:element>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--