This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: How do you use the URIResolver interface to find xsl templatesin a WAR base application
- From: Robert Koberg <rob at koberg dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Tue, 23 Apr 2002 07:10:51 -0700
- Subject: Re: [xsl] How do you use the URIResolver interface to find xsl templatesin a WAR base application
- References: <D758284A798DD3119AFB00508B6FCF5103317554@fhnt072.fhmis.net>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi,
Why not just put your XSL in:
File "C:\Program
Files\IBM\ApplicationDeveloper\workspace\PositionControlFormsWeb\webApplication\WEB-INF\xsl\
A further benefit of having your XSL/XML under WEB-INF is it's hidden securely from your app user.
Curious, what do you think the following should return?
final String documentRoot =
getServletConfig().getServletContext().getRealPath("");
(answer: the root of WEB-INF)
best,
-Rob
Onaindia, Juan wrote:
>Hello,
>
>In the middle of converting existing applications to a WAR deployment
>environment, I have come up with the problem that during the transformation
>(in Java) the transformer tries to find the stylesheets base on the root of
>the application server in my case WebSphere.
>I have been trying to use the URIResolver interface to resolve this by
>passing the document root and publicId.
>The path of the file is correct but I still get the following exception:
>
>javax.xml.transform.TransformerConfigurationException:
>
>File "C:\Program Files\IBM\Application
>Developer\workspace\PositionControlFormsWeb\webApplication\WEB-INF\xsl\PCFMe
>taArea.xsl" not found
>
>I appreciate if someone could HELP me with this issue.
>
>Here is the code that I am using to do the transformation:
>
>final String documentRoot =
>getServletConfig().getServletContext().getRealPath("");
>
>TransformerFactory tFactory = TransformerFactory.newInstance();
>DIURIResolverImpl resolver = new DIURIResolverImpl(documentRoot);
>tFactory.setURIResolver(resolver);
>
>Transformer transformer = tFactory.newTransformer(new StreamSource(new
>FileInputStream(xslFilePath)));
>
>transformer.setOutputProperty(OutputKeys.METHOD, "html");
>transformer.setOutputProperty(OutputKeys.INDENT, "yes");
>// pass a parameter to the XSLT stylesheet
>transformer.setParameter("rootDir", documentRoot);
>transformer.transform(new StreamSource(doc), new StreamResult(out));
>
>
>The DIURIResolverImpl source code:
>
>import java.net.URL;
>import javax.xml.transform.URIResolver;
>import javax.xml.transform.TransformerException;
>import javax.xml.transform.Source;
>import javax.xml.transform.stream.StreamSource;
>
>public class DIURIResolverImpl implements URIResolver
>{
> private String docRoot;
>
> public DIURIResolverImpl(String documentRoot)
> {
> docRoot = documentRoot;
> }
> public Source resolve(String href, String base) throws
>TransformerException
> {
> try
> {
> return new StreamSource(docRoot + href);
> }
> catch (Exception e)
> {
> throw new TransformerException(e);
> }
> }
>}
>
>Once again, I appreciate any input.
>
>Thanks,
>
>Juan Onaindia
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list