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

Passing Parameters from java to XSL

Subject: Passing Parameters from java to XSL
From: Margarita Manterola <margaritam@xxxxxxxxxx>
Date: 07 Nov 2002 11:32:06 -0300
java passing parameters
I've been browsing the archives and I've found that this is a common
problem, but most people just want to pass one string parameter.  In my
case, I want to pass a NodeSet.

I'm using saxon as the parser, and J2EE 1.3.1.

The code I'm using is quite complex, so I'm going to include the most
significant snippets.

Mainly the idea is to include a special xml as a parameter to many other
xmls.

=== XMLConverter.java ===
public class XMLConverter 
{
...
 public void xml2file(String strXSLURL, Node oRelationshipsNode,
                      Node oXMLNode, String strFile)
   throws TransformerException, TransformerConfigurationException, 
   FileNotFoundException, IOException
 {

     StreamSource oXSLSource = new StreamSource(strXSLURL);
     DOMSource oXMLSource = new DOMSource(oXMLNode);
     FileOutputStream oFileOutput = new FileOutputStream(strFile);

     TransformerFactory oFactory = TransformerFactory.newInstance();
     Transformer oTransformer = oFactory.newTransformer(oXSLSource);
     oTransformer.setParameter("relationships", oRelationshipsNode);

     oTransformer.transform(oXMLSource, new StreamResult(oFileOutput));
  }


=======================

=== xml2java.jsp ===

 // This gets a node inside the XML, using a custom XPath reader
 XPathReader oRelReader = new XPathReader(strRelationshipsURL);
 Node oRelNode = oRelReader.getNode("/ecrm/relationships");

 XPathReader oReader = new XPathReader(xmlURL);
 NodeIterator iterator;
 Node node;
 iterator = oReader.getNodeIterator("/ecrm/entity");
 while ((node = iterator.nextNode()) != null)
 {
   String file = oReader.getXPathString(node, "@name") + ".java";
   String path = "/home/margaritam/";
   converter.xml2file(xslURL, oRelNode, node, path + file);
 }	
====================

=== relationships.xml ===
<?xml version='1.0' encoding='ISO-8859-1'?>
<ecrm>
   <relationships>
      <relationship object="Contact" field="account"
        related_object="Account" />
      ...
   </relationships>
</ecrm>
========================

=== accounts.xml ===

<ecrm>
  <entity package="com.coremation.ecrm" name="Account" > 

  ...

  </entity>
</ecrm>

====================

==== entity_bean.xsl ====

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="relationships" /> 
<xsl:output method="text" />
<xsl:include href="general.xsl" />

<xsl:template match="/">
<xsl:param name="relationships" /> 
<xsl:apply-templates select="ecrm/entity" >
	<xsl:with-param name="relationships" /> 
</xsl:apply-templates>
</xsl:template>

<xsl:template match="entity">
<xsl:param name="relationships" /> 
   ....
</xsl:param>
</xsl:template>
</xsl:stylesheet>
=========================

If I include only the first <xsl:param name="relationships" />  (the one
outside everything), nothing happens, and the same when I include the
first and the second.  But when I include the one inside the
<xsl:template match="entity"> I get an ArrayOutOfBoundsException.

PLEASE! Help me!

Regards,
Margarita.




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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.