[xep-support] How can I use FOTransformer with xsl:include relative path.

frederic.ouellet at desjardins.com frederic.ouellet at desjardins.com
Thu Oct 21 08:10:33 PDT 2004






With no reply, I will do it more simple...

How can I use xsl:include relative path (with the URIResolver) with the FOTransformer?

The only logical path I found to do it:

    FOTransformer transformer = new FOTransformer(new StreamSource(XSLfile.openStream()),formatter);
    transformer.setURIResolver(genPDFURIResolver);
    transformer.transform(new StreamSource(new StringReader(xmlStringData)), target);

ERROR:

The FOTransformer will validate my XSL file that has the xsl:include (he don'T find it, so he throw exception, see annex below).  So, the setURIResolver cannot be
effective and then, the PDF is not generated.

I search a way to do:

   FOTransformer transformer = new FOTransformer(formatter);
   transformer.setURIResolver(genPDFURIResolver);
   transformer.setXSLFile(new StreamSource(XSLfile.openStream());
   transformer.transform(new StreamSource(new StringReader(xmlStringData)), target);

I had gone to the light API documentation.  The only method I found for adding XSL will be:

setParameter
public void setParameter(java.lang.String name,
                         java.lang.Object value)
      Adds a parameter for XSL transformation.
      Parameters:
            name - parameter name
            value - parameter value
      See Also:
            getParameter(String), clearParameters()


But,  I don't have a clue about those parameters...  So, the userguide said I must see javax.xml.transform:

setParameter
public abstract void setParameter(String name,
                                  Object value)
      Add a parameter for the transformation.


      Pass a qualified name as a two-part string, the namespace URI enclosed in curly braces ({}), followed by the local name. If the name has a null URL, the String only
      contain the local name. An application can safely check for a non-null URI by testing to see if the first character of the name is a '{' character.


      For example, if a URI and local name were obtained from an element defined with <xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>, then the qualified name
      would be "{http://xyz.foo.com/yada/baz.html}foo". Note that no prefix is used.
      Parameters:
            name - The name of the parameter, which may begin with a namespace URI in curly braces ({}).
            value - The value object. This can be any valid Java object. It is up to the processor to provide the proper object coersion or to simply pass the object on
            for use in an extension.

Can I pass the XSL like this:

   transformer.setParameter(new StreamSource(MyPDFCreator.class.getResourceAsStream (XSLFile.getPath())),new StreamSource(XSLFile.openStream());

So, please give me the proper algorithm to permit the relative path for include xsl with the FOTransformer...  any algorithm will be appreciated.

Best Regards,
Frédéric Ouellet




                                                                                                                                                                          
             frederic.ouellet at desjardins.com                                                                                                                              
             Envoyé par : owner-xep-support at renderx.com                                                                                                                   
                                                                                                                                                                     Pour 
                                                                             xep-support at renderx.com                                                                      
             2004-10-20 13:26                                                                                                                                          cc 
                                                                             owner-xep-support at renderx.com, "frederic.ouellet at desjardins.com" <xep-support at renderx.com>   
                                                                                                                                                                    Objet 
                               Veuillez répondre à                           Réf. : [xep-support] Re: Réf. : [xep-support] xsl:include -                                  
                             xep-support at renderx.com                         javax.xml.transform.TransformerException: Had IO Exception with stylesheet file:             
                                                                             ergoDesjardins.xsl                                                                           
                                                                                                                                                                          
                                                                                                                                                                          
                                                                                                                                                                          
                                                                                                                                                                          
                                                                                                                                                                          
                                                                                                                                                                          









Thanks Alexander,

I actually try to create an EntityResolver to give the good path for the include file.  I will develop it and test it.  I hope it will give me a good solution.

My file is in the EAR file on a weblogic server.  I thought that the path of the include file was already relative but it don't seem to be true.  I will give more
information if I cannot handle this situation with EntityResolver.

Your intervention was greatly appreciated.

Best Regards,

Frédéric Ouellet




             Alexander Peshkov <peshkov at renderx.com>
             Envoyé par : owner-xep-support at renderx.com
                                                                                                                                                                     Pour
                                                                             "frederic.ouellet at desjardins.com" <xep-support at renderx.com>
             2004-10-20 12:19                                                                                                                                          cc

                                                                                                                                                                    Objet
                               Veuillez répondre à                           [xep-support] Re: Réf. : [xep-support] xsl:include -
                             xep-support at renderx.com                         javax.xml.transform.TransformerException: Had IO Exception with stylesheet file:
                                                                             ergoDesjardins.xsl










Hello Frédéric,

As you can see from the stack trace this exception produced by Xalan
and thus has nothing to do with XEP itself or Saxon that is shipped with XEP.

Still, if you explain your situation in more details someone can came
up with a solution. The problem is clearly has something to do with
incorrect paths (URLs) so the main information you should provide is
full list of paths used for your application, basic stylesheet,
referenced sub-stylesheets, etc. For example, does file
/res/gabarit/pres/xsl/ergoDesjardins.xsl exists on your disk? I do not
speak French (unfortunately) so I cant interpret exception text but
I guess that it says about I/O error and file not found.
More details on your environment/setup could also help.

Best regards,
Alexander Peshkov                             mailto:peshkov at renderx.com
RenderX



fodc> Restart my need...

fodc> Does the support can help me?

fodc> Here it is:

fodc> Causé par: org.xml.sax.SAXException: Exception d?E/S avec le fichier de feuille de style : /res/gabarit/pres/xsl/ergoDesjardins.xsl
fodc>       à org.apache.xalan.processor.StylesheetHandler.error(StylesheetHandler.java:891)
fodc>       à org.apache.xalan.processor.StylesheetHandler.error(StylesheetHandler.java:919)
fodc>       à org.apache.xalan.processor.ProcessorInclude.parse(ProcessorInclude.java:316)
fodc>       à org.apache.xalan.processor.ProcessorInclude.startElement(ProcessorInclude.java:189)
fodc>       à org.apache.xalan.processor.StylesheetHandler.startElement(StylesheetHandler.java:656)
fodc>       à weblogic.apache.xerces.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:459)
fodc>       à weblogic.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:221)
fodc>       à weblogic.apache.xerces.impl.XMLNamespaceBinder.handleStartElement(XMLNamespaceBinder.java:874)
fodc>       à weblogic.apache.xerces.impl.XMLNamespaceBinder.emptyElement(XMLNamespaceBinder.java:591)
fodc>       à weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:747)
fodc>       à weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1477)
fodc>       à weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:329)
fodc>       à weblogic.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:525)
fodc>       à weblogic.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:581)
fodc>       à weblogic.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
fodc>       à weblogic.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1175)
fodc>       à weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:135)
fodc>       à weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:138)
fodc>       à org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:934)
fodc>       à org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:750)
fodc>       à weblogic.xml.jaxp.WebLogicTransformerFactory.newTransformer(WebLogicTransformerFactory.java:195)
fodc>       à weblogic.xml.jaxp.RegistryTransformerFactory.newTransformer(RegistryTransformerFactory.java:209)
fodc>       à com.renderx.xep.FOTransformer.createTransformer(Unknown Source)
fodc>       à com.renderx.xep.FOTransformer.<init>(Unknown Source)
fodc>       à fcdq.tiinap.infra.commun.generationpdf.GenerateurPDF.generePDF(GenerateurPDF.java:107)
fodc>       à fcdq.tiinap.infra.presdesj.gabarit.GestGabaritPDF.construirePDF(GestGabaritPDF.java:97)
fodc>       à fcdq.tiinap.infra.presdesj.servlet.GenerateurReponsePDF.produireReponseNormale(GenerateurReponsePDF.java:254)
fodc>       à fcdq.tiinap.infra.presdesj.servlet.ServletAiguilleur.construireReponse(ServletAiguilleur.java:230)
fodc>       à fcdq.tiinap.infra.presdesj.servlet.ServletAiguilleur.produireReponseErreur(ServletAiguilleur.java:2077)
fodc>       à fcdq.tiinap.infra.presdesj.servlet.ServletAiguilleur.produireReponse(ServletAiguilleur.java:1812)
fodc>       à fcdq.tiinap.infra.presdesj.servlet.ServletAiguilleur.traiterRequeteHttp(ServletAiguilleur.java:2182)
fodc>       à fcdq.tiinap.infra.presdesj.servlet.ServletAiguilleur.doGet(ServletAiguilleur.java:317)
fodc>       à javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
fodc>       à javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
fodc>       à weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
fodc>       à weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
fodc>       à weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
fodc>       à weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
fodc>       à fcdq.tiinap.infra.commun.servletfilter.ServletFilterBase.doFilter(ServletFilterBase.java:267)
fodc>       à weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
fodc>       à weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6356)
fodc>       à weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
fodc>       à weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
fodc>       à weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
fodc>       à weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
fodc>       à weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
fodc>       à weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)

fodc> In the ear of the application, the classpath for ressources is res...  so, I have tried a lot of path to include this in my xsl:

fodc>       <xsl:include href="ergoDesjardins.xsl"/>
fodc>       <xsl:template match="ERREUR_PDF">

fodc> I have tried to pass the props BASE with my classpath for resources, but I have received a malformed url exception.

fodc> This FoTransformer will be deploy on 4 cluster in staging and none-staging mode.  So, I cannot put all the path like this:  mydomain/webapp/andsoon.

fodc> It is really annoying to pass 8 hours to include a file that don't want to be include...  I hope XEP will give good support for this concern and I suggest to put
this
fodc> case in a well documented area.  On the internet,  google give 10 pages for this kind of error...  and generally, the answer is to put the complete url.  I cannot
do
fodc> this.  I want to put a relative path.

fodc> Please, take time to answer those concerns.

fodc> Frédéric Ouellet





fodc>              frederic.ouellet at desjardins.com

fodc>              Envoyé par : owner-xep-support at renderx.com

fodc>
Pour
fodc>                                                                              xep-support at renderx.com

fodc>              2004-10-19 15:11
cc

fodc>
Objet
fodc>                                Veuillez répondre à                           [xep-support] xsl:include - javax.xml.transform.TransformerException: Had IO Exception
with
fodc>                              xep-support at renderx.com                         stylesheet file: ergoDesjardins.xsl
















fodc> Hello everybody,

fodc> I have some problems with the include of a xsl to do attribute-set.  When I generated my PDF with XMLSpy (xml and xsl), everthing is good and smooth.  When I do the
same
fodc> with my pdf generator services (in java),  this exception is throw:

fodc> javax.xml.transform.TransformerException: Had IO Exception with stylesheet file: ergoDesjardins.xsl

fodc> I have change the location of the include file:

fodc> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
fodc>       <xsl:include href="./general/ergoDesjardins.xsl"/>
fodc>       <xsl:template match="ERREUR_PDF">

fodc> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
fodc>       <xsl:include href="general/ergoDesjardins.xsl"/>
fodc>       <xsl:template match="ERREUR_PDF">

fodc> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
fodc>       <xsl:include href="ergoDesjardins.xsl"/>
fodc>       <xsl:template match="ERREUR_PDF">

fodc> There are all good in XmlSpy and all wrong with my FoTransformer.

fodc> I have search the doc and google, but I didn't find evidence of the trouble.

fodc> I hope you know what I have missed.  Please, help me to find out!

fodc> Best regards,

fodc> Frédéric Ouellet



fodc> -------------------
fodc> (*) To unsubscribe, send a message with words 'unsubscribe xep-support'
fodc> in the body of the message to majordomo at renderx.com from the address
fodc> you are subscribed from.
fodc> (*) By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html



fodc> -------------------
fodc> (*) To unsubscribe, send a message with words 'unsubscribe xep-support'
fodc> in the body of the message to majordomo at renderx.com from the address
fodc> you are subscribed from.
fodc> (*) By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html


-------------------
(*) To unsubscribe, send a message with words 'unsubscribe xep-support'
in the body of the message to majordomo at renderx.com from the address
you are subscribed from.
(*) By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html



-------------------
(*) To unsubscribe, send a message with words 'unsubscribe xep-support'
in the body of the message to majordomo at renderx.com from the address
you are subscribed from.
(*) By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html



-------------------
(*) To unsubscribe, send a message with words 'unsubscribe xep-support'
in the body of the message to majordomo at renderx.com from the address
you are subscribed from.
(*) By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html



More information about the Xep-support mailing list