xsl-list
[Top] [All Lists]

XSL java extension newbie question

2003-10-02 12:38:33
Hi,

I am trying to write a simple test xsl file using java extensions. I have a simple xml file that says

<items>
  <item>
     <name>a</name>
  </item>
  <item>
     <name>b</name>
  </item>
</item>

I want to use xsl to gather all the item names into a class called MyTest

so i have MyTest.java as

public class MyTest
{
  int itemsCount=0;
  public void foundItem()
  {
     itemsCount++;
  }
}

I want to create an object of this class and pass to an xsl stylesheet so it can update it when the transformation is being done. And I cant find a way to get the stylesheet to access the object i have passed in. it seems to create a new object of type MyTest and update it. A lot of examples i've seen of passing objects as parameters into XSLs only seem to print it out in the xsl...how do i update the passed in parameter in the xsl.

my main reads...
public static void main (String[]args)
 {
   String xmlFile = "input.xml";
   String xslFile = "input.xsl";
   MyTransformer myt;
   Source xml;
   Source xsl;
   Result result = new StreamResult (System.out);
   HashMap params = new HashMap ();

   MyTest x=new MyTest();

   try
   {
     myt = new MyTransformer ();
     xml = myt.SourceFromFilename (xmlFile);
     xsl = myt.SourceFromFilename (xslFile);
     params.put ("changeme", x);
     myt.transform (xml, xsl, result, params);
     System.out.println("%%%%%%%%%%%\n"+x.itemsCount);
   } catch (Exception e)
   {
     System.out.println ("Exception: " + e.getMessage ());
   }

and the xsl reads as
<?xml version="1.0"  ?>

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 xmlns:xalan="http://xml.apache.org/xalan";
 xmlns:mytest="MyTest"
 extension-element-prefixes="mytest">
 <xsl:param name="changeme" />
 <xsl:template match="/">
       <!-- this does print the object as in main -->
       <xsl:value-of select="$changeme"/>
       <xsl:apply-templates select="items">
         <xsl:with-param name="changeme"  select="$changeme" />
       </xsl:apply-templates>
 </xsl:template>
 <xsl:template match="items">
     <xsl:apply-templates select="item">
     </xsl:apply-templates>
 </xsl:template>
 <xsl:template match="item">
     <xsl:value-of select="mytest:foundItem()"/>
 </xsl:template>

</xsl:stylesheet>


please point to a doc/example which shows how to use the object passed into the xsl.

thanks
sivaram

_________________________________________________________________
Share your photos without swamping your Inbox. Get Hotmail Extra Storage today! http://join.msn.com/?PAGE=features/es


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



<Prev in Thread] Current Thread [Next in Thread>