Subject: RE: Problem with saxon7, Transformer and URIResolver
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 8 Apr 2005 13:13:38 +0100
|
The URIResolver on the Transformer is used for resolving run-time URIs, such
as those in the document() function. For compile-time URIs, such as
xsl:include, you need to set a URIResolver on the TransformerFactory. By the
time you create your Transformer the stylesheet has already been compiled,
and all xsl:includes and xsl:imports have already been resolved.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Olaf Meske [mailto:omeske@xxxxxxxxxxx]
> Sent: 08 April 2005 13:02
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Problem with saxon7, Transformer and URIResolver
>
> Hello,
>
> I try to use a customized / wrapped URIResolver with saxon7,
> to change
> an additional style sheet imported with
> <xsl:include href="myspecial.xsl" />
> to resolve this "myspecial.xsl" to some other url.
>
> I created the Transformer with:
> =========
> TransformerFactory tFactory = TransformerFactory.newInstance();
> transformer = tFactory.newTransformer(new StreamSource("./main.xsl"));
> // this main.xsl contains the xsl:include
> URIResolver resolver = transformer.getURIResolver();
> URIResolver newRes = new MyURIResolver(resolver, ...);
> transformer.setURIResolver(newRes);
> [...]
> // now invoking some xml file with transformer ...
>
> I wonder why my wrapped URIResolver (MyURIResolver) will never be
> invoked to resolve the xsl:include.
>
> Do I have to set the URIResolver *before* setting the
> main.xsl for the
> Transformer? And when I have to, how can I do it?
>
> Regards,
>
> Olaf
>
> --
> Olaf Meske
> www.softcare.de
|