[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Passing side documents to stylesheet (in Java)

Subject: Re: Passing side documents to stylesheet (in Java)
From: Andrew Franz <afranz0@xxxxxxxxxxxxxxxx>
Date: Thu, 26 Oct 2006 07:45:11 +1000
jstl transform document function
Hi Matynas,
I'm going through a PHP-to-Java conversion myself.

Using JSP and JSTL, I've used the following method:
(illustrating passing of request parameters)

In the JSP page:
   <x:parse var="requestXml">
   <params>
      <param id="action">${param['action']}</param>
      ...
   </params>
   </x:parse>
...
   <x:translate doc="<uri of XML document>" xslt="URI of XSLT document">
      <x:param name="rx" value="${requestXml"} />
      ...
   </x:translate>

In the XSLT:
   ...
   <xsl:param name="rx" />

   <p>Action:<xsl:value-of select="$rx/params/param[@id='action']" /><br/>
   ...

If it complains about result tree fragments, you can use Xalan-Java extensions, and the above becomes:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xalan/java"
exclude-result-prefixes="java">


<xsl:param name="rx" />
...
<p>Action:<xsl:value-of select="xalan:nodeset($rx)/params/param[@id='action']" /><br/>


More info about Xalan-Java extensions here:
   http://xml.apache.org/xalan-j/extensions.html#ext-functions


The other method is to use the document() function, but that's not really suitable for run-time documents.
The above passes a DOM document and it works because XSLT and JSTL have the same parser (Xalan) under Tomcat.




Martynas Jusevicius wrote:

Hi,

probably this is an old issue, but I'm struggling to find a solution.

My XSLT stylesheet is using several side documents that are
constructed at run-time.

Back in PHP I was passing them using a stream wrapper and a custom
"arg:" protocol. Then, for example, the stylesheet could get access
through document('arg://mydoc').

Obviously, that doesn't work in Java. So how do you do it in Java? I'm
using JDK 1.5 and the standard java.xml.transform package.

Thanks,

Martynas

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.