[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] How to invoke java instance methods from xslt?
Could someone please provide the recipe for passing a java
instance into xslt and then calling a method on that instance?
I'm using xalan extensions but keep getting lost in the weedy
syntax.
With this input <task ident="..."> <page ident="...">Arbitrary xhtml</page> <page ident="...">Arbitrary xhtml</page> <page ident="...">Arbitrary xhtml</page> <page ident="...">Arbitrary xhtml</page> <page ident="...">Arbitrary xhtml</page> <page ident="...">Arbitrary xhtml</page> </task> and this for launching xslt from java StringWriter sw = new StringWriter(); TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(new StreamSource(xslPath)); transformer.setParameter("cache", this); transformer.transform(new StreamSource(xmlPath), new StreamResult(sw)); and this xslt. Cache is the java instance and addBody is one of its public methods. <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xslt/java" version="1.0"> <xsl:param name="cache"></xsl:param> <xsl:template match="/task"> <xsl:apply-templates select="page"/> </xsl:template> <xsl:template match="page"> <xsl:variable name="ident" select="string(@ident)"/> <xsl:variable name="body" select="text()"/> <xsl:param name="cache" select="java:$cache.addPage($ident, $body)"/> <xsl:value-of select="java:format($formatter, $date)"/> </xsl:template> </xsl:stylesheet> The match("page") clause is gibberish because where I'm getting lost. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|