On 2/21/2010 7:44 PM, David Bertoni wrote:
On 2/20/2010 1:49 PM, BPederson wrote:

Dave-

I am still struggling with the concept, most likely because I started in
Xalan-J.  From my perspective, it appears the implemetations are
considerably different. The vendor product I'm using makes the Xalan-C++ library call to do the stylesheet transformation. I unfortunately have no control over the application referencing the Xalan-C++ library. All I have control over is the XSLT, which I make the function extension call from. In
Xalan-J, not a problem because the Xalan.jar file knows that Rhino is
available to handle my javascript and do the file read.

So correct me on this thought process for Xalan-C++:

No doubt I can create a C++ function extension to read the file but if I
can't embed it in the application referencing the Xalan-C++ library to do the stylesheet transformation, then I'm out of luck? Or is there a way for me to create this function extension as a stand-alone DLL that gets called when the Xalan-C++ library, called by the vendor application, comes across
the function call in my XSLT.
Since C++ is a statically compiled language, there's no way to do the kinds of things you can do in Java with scripting extensions.

It would be possible to extend Xalan-C++ with some sort of syntax to describe how to load an extension function, but there's no current facility for that. It's a bit messy, because there is no standard cross-platform mechanism for loading and calling functions in shared libraries.

You can write and compile an extension function into a DLL, but the executable that initializes the Xalan-C++ library and does the transformation would need to be modified to install your extension function.

Dave

XSLT Version 1.0 as implemented in XALAN-C also supports the XPath document(url) function that returns a node-set.

This allows you to have a composite document that is constructed from multiple sources.

<xsl:for-each select="document('url-to-file.xml')">
<!-- the template content that processes the 'url-to-file.xml' node-set -->
</xsl:for-each>

You can use the document() function anywhere a node-set object is specified. This capability requires no custom XPath extensions.

Most compliant XSLT processors implement the document() functon.

 -- Steve Hathaway

Reply via email to