Re: xalan extensions - get the result tree

David Bertoni <[email protected]>
Newsgroups gmane.text.xml.xalan.java.user
Message-ID <[email protected]>
Jan Hoeft wrote:
> Hi,
> is it possible to get the result tree and work on it?
> 
> I am able to do the transformation on my own via executeChildTemplates. 
> But I have not found a way to process the result.
> 
> <xalan:component prefix="my" elements="countwords">
>    <xalan:script lang="javascript">
>        function countwords(context, elem){
>            transf = context.getTransformer();
>            transf.executeChildTemplates(elem,true);
>            return "";
>        }
>    </xalan:script>
> </xalan:component>
> 
> <xsl:template match="/">
>    <my:countwords>
>        <text>
>            some words
>            <xsl:value-of select="."/>
>        </text>
>    </my:countwords>
> </xsl:template>
Instead of doing this, I would create an extension function to count 
words, then do the following:

<xsl:template match="/">
   <xsl:variable name="text">
         some words
         <xsl:value-of select="."/>
   </xsl:variable>

   <text count="{ext:count-words($text)}">
     <xsl:value-of select="$text"/>
   </text>
</xsl:template?

If the whitespace within the "text" element is not interesting, you 
could create a string variable, instead of a result tree fragment variable:

   <xsl:variable name="text" select="concat('some words ', .)" />

which is more efficient.

Note that it's also possible to write a recursive template to count 
words, if you don't want to write an extension function.

Dave
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.