Desktop Testing XSL

Bit of a corner case this week but I wanted to park this as much for my reference as yours. Need to be able to test a pure XSL template against some sample data? Thats an XSL template that is going to generate HTML, Text or HTML. The Template Viewer app in the BI Publisher Desktop group does not offer that as an option. It does offer XSL-FO proccesing thou.

A few minutes digging around in the java libraries and I came up with a command line solution that is easy to set up and use.

1. Place your sample XML data and the XSL template in a directory
2. Open the lib directory where the TemplateViewer is installed. On my machine that is d:\Oracle\BIPDesktop\TemplateViewer\lib
3. Copy the xmlparserv2.jar file into the directory created in step 1.
4. Use the following command in a DOS/Shell window to process the XSL template against the XML data.

java -cp ./xmlparserv2.jar oracle.xml.parser.v2.oraxsl fileX.xml fileY.xsl > fileX.xls


The file generated will depend on your XSL. For an Excel output, you would instruct the process to generate fileX.xls in the same folder. You can then test the file with Excel, a browser or a text editor. Now you can test on the desktop until you get it right without the overhead of having to load it to the server each time.

To be completely clear, this approach is for pure XSL templates that are designed to generate text, html or xml. Its not for the XSLFO templates that might be used at runtime to generate PDF, PPT, etc. For those you should use the Template Viewer application, it supports the XSLFO templates but not the pure XSL templates.

If your template still falls into the pure XSL template category. This will be down to you using some BIP functionality in the templates. To get it to work you'll need to add in the Publisher libraries that contain the function e.g. xdo-core.jar, i18nAPI_v3.jar, etc to the classpath argument (-cp.)

So a new command including the required libraries might look like:

java -cp ./xmlparserv2.jar;./xdo-core.jar;./i18nAPI_v3.jar 
                            oracle.xml.parser.v2.oraxsl fileX.xml fileY.xsl > fileX.xls

 You will need to either move the libraries to the local directory, my assumption above or include the full path to them. More info here on setting the -cp attribute.

Comments:

thanks a lot tim for giving us workaround to test xsl template in desktop, so that we don't need to upload it to server and test it every time we make a change.

i have followed the same steps what you have given but i am getting below error . when i tried to search on that error in some post they say i need to have orai18n-collation.jar file in same folder. i have copied that file also to the folder we created in first step but no help.

<?xml version = '1.0' encoding = 'UTF-8'?>
Exception in thread "Thread-1" java.lang.NoClassDefFoundError: oracle/i18n/text/OraCollator
at oracle.xml.xqxp.functions.builtIns.FNUtil.getCollator(FNUtil.java:355)
at oracle.xml.xqxp.datamodel.OXMLItem.compareValue(OXMLItem.java:1080)
at oracle.xml.xpath.XPathItem.compareValue(XPathItem.java:409)
at oracle.xml.xpath.XPathSequence.compareGeneral(XPathSequence.java:1477)
at oracle.xml.xpath.ComparisonExpr.evaluate(XSLExpr.java:1507)
at oracle.xml.xpath.XPathPredicate.filter(XPathPredicate.java:264)
at oracle.xml.xpath.XPathChildAxis.getNodeList(XPathAxis.java:580)
at oracle.xml.xpath.XPathStep.evaluate(XPathStep.java:555)
at oracle.xml.xpath.PathExpr.evaluate(XSLNodeSetExpr.java:859)
at oracle.xml.xpath.XSLExprBase.streamingEvaluate(XSLExprBase.java:392)
at oracle.xml.xpath.XPathFunctionCall.evaluate(XPathFunctionCall.java:798)
at oracle.xml.xpath.ComparisonExpr.evaluate(XSLExpr.java:1497)
at oracle.xml.xslt.XSLCondition.testCondition(XSLCondition.java:206)
at oracle.xml.xslt.XSLCondition.processAction(XSLCondition.java:188)
at oracle.xml.xslt.XSLNode.processChildren(XSLNode.java:497)
at oracle.xml.xslt.XSLTemplate.processAction(XSLTemplate.java:205)
at oracle.xml.xslt.XSLStylesheet.execute(XSLStylesheet.java:585)
at oracle.xml.xslt.XSLStylesheet.execute(XSLStylesheet.java:551)
at oracle.xml.xslt.XSLProcessor.processXSL(XSLProcessor.java:343)
at oracle.xml.xslt.XSLProcessor.processXSL(XSLProcessor.java:193)
at oracle.xml.xslt.XSLProcessor.processXSL(XSLProcessor.java:230)
at oracle.xml.parser.v2.XSLProcessor.processXSL(XSLProcessor.java:122)
at oracle.xml.async.XSLTransformer.run(XSLTransformer.java:136)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: oracle.i18n.text.OraCollator
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 24 more

Posted by varma on November 25, 2013 at 08:00 AM MST #

Hi Varma

To be completely clear, this approach is for pure XSL templates that are designed to generate text, html or xml. Its not for the XSLFO templates that might be used at runtime to generate PDF, PPT, etc. For those you should use the Template Viewer application, it supports the XSLFO templates but not the pure XSL templates.

If your template still falls into the pure XSL template category. This will be down to you using some BIP functionality in the templates. To get it to work you'll need to add in the Publisher libraries that contain the function e.g. xdo-core.jar, i18nAPI_v3.jar, etc to the classpath argument (-cp.)

So a new command might look like:
java -cp ./xmlparserv2.jar;xdo-core.jar;i18nAPI_v3.jar oracle.xml.parser.v2.oraxsl fileX.xml fileY.xsl > fileX.xls

Tim

Posted by tim on November 25, 2013 at 09:43 AM MST #

Post a Comment:
  • HTML Syntax: NOT allowed
About

Follow bipublisher on Twitter Find Us on Facebook BI Publisher Youtube ChannelDiscussion Forum

Join our BI Publisher community to get the most and keep updated with the latest news, How-to, Solutions! Share your feedback and let us hear your voice @bipublisher on Twitter, on our official Facebook page, and Youtube!

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today