Subject: RE: [xsl] How to: Returning HTML Elements From a Saxon Extension Function (6.5.x) From: "Michael Kay" <mhk@xxxxxxxxx> Date: Thu, 17 Apr 2003 22:53:24 +0100 |
You should probably be asking this question on the Saxon list rather than here, but here goes. This is actually a lot easier in 7.4 than in 6.5.2. In 7.4 there are two very easy solutions: (1) call XPathEvaluator, you can give this any JAXP Source object, and it will give you back a NodeInfo which you can return from your extension function (2) return the XML string to the stylesheet and call saxon:parse to parse it into a tree. In 6.5.2 you have to probe a little bit deeper to find the right interfaces. I think the simplest way (because it involves least use of Saxon-specific methods) is to do a JAXP identity transformation from any Source object to a DOMResult, where the DOMResult is primed using setNode() on a document node created using new com.icl.saxon.TinyDocumentImpl(); you can then return this document node as the result of your extension function. Happy Easter, Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > W. Eliot Kimber > Sent: 17 April 2003 19:39 > To: xsl-list > Subject: [xsl] How to: Returning HTML Elements From a Saxon > Extension Function (6.5.x) > > > I want to make sure I'm thinking about a small XSLT puzzle > correctly: my > requirement is to provide a Saxon extension function that returns a > restult tree (or a string that will become a result tree). What I'm > doing is building a navigation bar based on configuration information > held in an external file and accessed through an external > Java library. > > If I just return the markup as a string (e.g., return "<a > href="#foo">bar</a>";) then it gets escaped, as you would expect. > > Looking through the docs for extension functions, it appears > that I need > to return a NodeInfo node that contains nodes for the markup. > NodeInfo > is a Saxon-specific DOM implementation. The Saxon DOM > implementation is > read-only, and if I'm understanding the docs correctly, I > have to use a > SAX process to construct new nodes. > > This leads to two questions: > > 1. Is my analysis correct or have I missed some easy way to > return this > markup? > > 2. If my analysis is correct, does anyone have an example of > doing this > sort of off-the-cuff SAX processing I could crib from? I > didn't find any > examples in the Saxon-supplied samples. > > Thanks, > > Eliot > -- > W. Eliot Kimber, eliot@xxxxxxxxxx > Consultant, ISOGEN International > > 1016 La Posada Dr., Suite 240 > Austin, TX 78752 Phone: 512.656.4139 > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to: Returning HTML El, Michael Kay | Thread | [xsl] Reusing XPath statements (def, Mitchell, David [CC] |
[xsl] Reusing XPath statements (def, Mitchell, David [CC] | Date | Re: [xsl] Reusing XPath statements , Wendell Piez |
Month |