[XSL-LIST Mailing List Archive Home]
RE: [xsl] resolving relative path without base
Subject: RE: [xsl] resolving relative path without base|
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 30 May 2007 10:47:54 +0100
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?
> -----Original Message-----
> From: Kai Hackemesser [mailto:kaha@xxxxxx]
> Sent: 30 May 2007 09:53
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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
> Michael Kay schrieb:
> > Use StreamSource.setSystemId() to define the base URI.
> > Michael Kay
> > http://www.saxonica.com/
> >> -----Original Message-----
> >> From: Kai Hackemesser [mailto:kaha@xxxxxx]
> >> Sent: 29 May 2007 16:43
> >> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >> 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
> >> 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@xxxxxx> 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
> >>> <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>