Leon,

It's been some time since my original post but I'm finally getting 
around to attempting the transformation in my application.  I'm trying 
to start out simply by defining an xslt.java for my screen action:

package vstreet.turbine.myapp.modules.screens;


import java.util.Vector;
import org.apache.turbine.modules.screens.VelocityScreen;
import org.apache.turbine.util.RunData;
import org.apache.turbine.services.xslt.TurbineXSLT;
import org.apache.velocity.context.Context;
import org.apache.turbine.util.Log;
import java.io.*;

public class xslt extends VelocityScreen
{
    public void doBuildTemplate( RunData data, Context context )
    {
        String result = null;
        context.put("foo", "fool");   // use to see if we are getting 
anything at all
        try {
              TurbineXSLT xslt = new TurbineXSLT();
              Reader r = new FileReader("/xsl/index2.xml");
              result =  xslt.transform("index2.xsl",r);
              r.close();
            }
            catch (Exception e) {
              Log.error(e);
            }
         if ( result == null )
            context.put ("xml",  "mistake");
         else
            context.put ("xml",  result);
    }
}
 
I'm calling:

<p>myxml: $xml</p>
 
from the xslt.vm and I get the following error:

[Sun Jul 14 20:04:37 PDT 2002] -- ERROR -- Turbine.handleException: 
com/ibm/bsf/util/BSFEngineImpl
[Sun Jul 14 20:04:37 PDT 2002] -- ERROR --
    Exception:  java.lang.NoClassDefFoundError: 
com/ibm/bsf/util/BSFEngineImpl
    Stack Trace follows:
    java.lang.NoClassDefFoundError: com/ibm/bsf/util/BSFEngineImpl
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:488)
    at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:106)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:243)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:51)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:190)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:183)
    at 
org.apache.catalina.loader.StandardClassLoader.findClass(StandardClassLoader.java:664)
    at 
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:1077)
    at 
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:976)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:310)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:115)
    at 
org.apache.xalan.xpath.ExtensionFunctionHandler.<init>(ExtensionFunctionHandler.java:110)
    at 
org.apache.xalan.xslt.ExtensionNSHandler.<init>(ExtensionNSHandler.java:104)
    at 
org.apache.xalan.xslt.StylesheetHandler.startElement(StylesheetHandler.java:606)
    at org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1340)
    at 
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1122)
    at 
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1858)
    at 
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1001)
    at 
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:952)
    at 
org.apache.xalan.xpath.xdom.XercesLiaison.parse(XercesLiaison.java:293)
    at org.apache.xalan.xpath.dtm.DTMLiaison.parse(DTMLiaison.java:289)
    at 
org.apache.xalan.xslt.XSLTEngineImpl.processStylesheet(XSLTEngineImpl.java:784)
    at 
org.apache.turbine.services.xslt.TurbineXSLTService.compileStylesheetRoot(TurbineXSLTService.java:179)
    at 
org.apache.turbine.services.xslt.TurbineXSLTService.getStylesheetRoot(TurbineXSLTService.java:208)
    at 
org.apache.turbine.services.xslt.TurbineXSLTService.transform(TurbineXSLTService.java:222)
    at 
org.apache.turbine.services.xslt.TurbineXSLTService.transform(TurbineXSLTService.java:261)
    at 
org.apache.turbine.services.xslt.TurbineXSLTService.transform(TurbineXSLTService.java:270)
    at 
org.apache.turbine.services.xslt.TurbineXSLT.transform(TurbineXSLT.java:92)
    at 
vstreet.turbine.myapp.modules.screens.xslt.doBuildTemplate(xslt.java:36)
    at 
org.apache.turbine.modules.screens.VelocityScreen.doBuildTemplate(VelocityScreen.java:111)
    at 
org.apache.turbine.modules.screens.TemplateScreen.doBuild(TemplateScreen.java:129)
    at org.apache.turbine.modules.Screen.build(Screen.java:99)
    at org.apache.turbine.modules.ScreenLoader.eval(ScreenLoader.java:129)
    at 
org.apache.turbine.modules.layouts.VelocityECSLayout.doBuild(VelocityECSLayout.java:100)
    at org.apache.turbine.modules.Layout.build(Layout.java:91)
    at org.apache.turbine.modules.LayoutLoader.exec(LayoutLoader.java:123)
    at 
org.apache.turbine.modules.pages.DefaultPage.doBuild(DefaultPage.java:166)
    at org.apache.turbine.modules.Page.build(Page.java:90)
    at org.apache.turbine.modules.PageLoader.exec(PageLoader.java:123)
    at org.apache.turbine.Turbine.doGet(Turbine.java:447)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:255)
    at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:225)
    at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at 
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2252)
    at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:446)
    at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
    at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at 
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:875)
    at 
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:952)
    at java.lang.Thread.run(Thread.java:479)


Thank,

Dan

Leon Messerschmidt wrote:

> Hi Dan,
>
> I created the original XSLTService, but I haven't been actively 
> involved for some time - this might change soon <hold item="thumb"/>  
> :-)   AFAK nothing should break the XSLTService, but if it broke I 
> will be willing to fix it.
>
> I will describe the XSLTService that I know for Turbine 2.x  - I 
> haven't looked at Turbie 3 yet.
>
> The first thing that you should do is to enter the XSLTService in your 
> TR.properties.  There are only 2 properties - the first one is the 
> path (relative to your webapp) where your XSL files will be stored and 
> the second turns XSLT caching on/off.  e.g.
>
> services.XSLTService.classname=org.apache.turbine.services.xslt.TurbineXSLTService 
>
> services.XSLTService.path=/WEB-INF/stylesheets
> services.XSLTService.cache=false
>
> Once you have done this you can use the XSLTService in your 
> source-code (it can be a screen, action or somewhere else).
>
> TurbineXSLT.transform ("mytransform.xsl", reader, writer);
>
> The first parameter is the name of your stylesheet (the file should 
> exist in the directory given in your TR.properties).  If this 
> stylesheet does not exist the service will attempt to load "default.xsl".
>
> The second parameter is a reader for the input XML and the third 
> parameter is a writer that will hold the result of the transformation.
>
> Hope this helps.  If it appears to be broken, please let me know and I 
> will fix it.
>
> ~ Leon
>
> daniel robinson wrote:
>
>> I've been at this all day, and I give up :).
>>
>> What I'm trying to do:
>> -Generate HTML using a stylesheet and XML from a database.
>>
>> Strategy:
>> -Use the XSLTService to perform this.
>> -Use doco and examples to figure out how.
>>
>> Issues:
>> - I don't understand how to use the XSLTService within Turbine.  I've 
>> read the doc (not much there), looked at the examples (none for 
>> XSLTService), searched the listserv archives (still nothing), and 
>> posted a message (still not working).
>> - I decided to take it one step at a time and figure out how to use a 
>> documented and exampled service - I chose upload.
>> - From what I can tell the Upload example does not use the 
>> UploadService :(.  But defines a application level action to do this.
>>
>> Assumptions:
>> - A service can be called directly from within a template using 
>> Velocity and I don't need to write an action.
>>
>> What I would like:
>> - A clean example of an application that uses XSLTService, or
>> - A clean example of an application that uses some service that I can 
>> use to figure out how to use XSLTService, or
>> - Someone to spell out exactly what I need to do.
>>
>> Help appreciated,
>>
>> Dan
>>
>>
>>
>>
>> -- 
>> To unsubscribe, e-mail:   
>> <mailto:[EMAIL PROTECTED]>
>> For additional commands, e-mail: 
>> <mailto:[EMAIL PROTECTED]>
>>
>>
>
>
>
>
> -- 
> To unsubscribe, e-mail:   
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: 
> <mailto:[EMAIL PROTECTED]>
>
>
>



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to