Subject: [xsl] Still Alive? From: Eric Berry <elberry@xxxxxxxxx> Date: Thu, 27 Jan 2005 13:17:41 -0800 |
I'm not sure if this mailing list is still active. I am truly hoping that it is. I am having some trouble using XSLT in my web application. More specifically I'm having trouble using Java during the translation process. I have worked with XSL quite a bit for this project and I've had to use little static Java helpers to perform really complex calculations and conditionals. However, a situation has come up where life would be a lot easier if I could have a persistent Java Object during Translation. The situation. I have an XML document with 3 large nodes under the root. <es-feed> <events /> <performers /> <venues /> </es-feed> My Application is only concerned with the events node, however the events need specific information provided within the performers and venues nodes. My XSLT file looks like: <xsl:template match="/"> <general-feed> <xsl:apply-templates select="performers" /> <xsl:apply-templates select="venues" /> <xsl:apply-templates select="events" /> </general-feed> </xsl:template> What I want to do is create a global variable that is a Java Object, and then I want to use this Java object to store the required information about performers and venues so that I can access it very quickly when translating the events node. A cut down version of the entire XSL file would look something like this: <xsl:template match="/"> <xsl:variable name="eventHolder" select="java:EventHolder.new()"/> <general-feed> <xsl:apply-templates select="performers" /> <xsl:apply-templates select="venues" /> <xsl:apply-templates select="events" /> </general-feed> </xsl:template> <xsl:template match="performers"> <xsl:for-each select="performer"> <xsl:variable name="id" select="@id" /> <xsl:variable name="name" select="name" /> <xsl:value-of select="eventHolder.holdPerformerName($id, $name)" /> </xsl:for-each> </xsl:template> <xsl:template match="venues"> <xsl:for-each select="venue"> <xsl:variable name="id" select="@id" /> <xsl:variable name="name" select="name" /> <xsl:value-of select="eventHolder.holdVenueName($id, $name)" /> </xsl:for-each> </xsl:template> <xsl:template match="events"> <events> <xsl:for-each select="event"> <xsl:variable name="performerID" select="performer-id" /> <xsl:variable name="venueID" select="venue-id" /> <event> <name><xsl:value-of select="name"/></name> <performer-name><xsl:value-of select="eventHolder.getPerformerName($performerID)" /></performer-name> <venue-name><xsl:value-of select="eventHolder.getVenueName($venueID)" /></venue-name> <event> </xsl:for-each> </events> </xsl:template> I can create the variable easily and it works. However I get errors whenever I try to access one of the methods. Perhaps there is a better way to do this, and I'd appreciate any help anyone can give me. Thanks, Eric
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XSL Newbie: How2 write tr, Pawson, David | Thread | [xsl] Instant Saxon and JVM/Class p, Gerrit Kuilder |
[xsl] XSL Newbie: How2 write transf, Joe Weder | Date | RE: [xsl] Fw: JAXP 1.3 with Saxon, Michael Kay |
Month |