Re: [xsl] how to handle structured data from Java

Subject: Re: [xsl] how to handle structured data from Java
From: Kevin Rodgers <kevin.rodgers@xxxxxxx>
Date: Mon, 10 Jan 2005 15:17:16 -0700
Robert Koberg writes:
> Kevin Rodgers wrote:
> > I need to pass an attribute value to a Java method implemented by a
> > co-worker and save the resulting object in a variable (since it's a
> > relatively expensive operation), then access the object's string
> > components.  Should I write an extension function in Java to call his
> > method and convert the object into a DOM Node that would be stored via
> > <xsl:value-of name="variable" select="extension:function(@attribute)">?
> > How would I then access its subnodes -- via select="$variable/component-x"?
> 
> You really don't want to use extensions.
> 
> > Or is there a better way?  
> 
> I think so. Have your co-worker create a class that implements 
> javax.xml.transform.URIResolver. It should check for the value coming in 
> as an href. When the resolver sees your attribute value, have him return 
> an appropriate XML Source. Then you can do the following in your XSL:
> 
> <xsl:variable name="myvar" select="document(@myattr)"/>

OK, but where do I reference HisClass?

URIResolver only declares the resolve method, which returns a Source.
But the Source interface only declares 2 methods, getSystemId and
setSystemId, neither of which is defined to return a dynamic value like
an XML string.

And since the document function takes a URI, shouldn't the select
expression be something like
	"document(concat('http://server/HisServlet?foo=', @myattr))"
If so, then why does he need to implement URIResolver as HisClass --
couldn't he just implement HisServlet?

Thanks,
-- 
Kevin Rodgers

Current Thread