This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How do you use the URIResolver interface to find xsl templatesin a WAR base application


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]