RE: [xsl] Collect word count with xslt2.0 on saxon 8

Subject: RE: [xsl] Collect word count with xslt2.0 on saxon 8
From: "Karen McAdams" <kamcadam@xxxxxxxxx>
Date: Wed, 17 May 2006 13:02:20 -0700
Hi George-

Thanks for the code sample. I would like to better understand how this
apply-templates works-
   <xsl:template match="*[contains(@class, 'topic/topic')]"
       <xsl:apply-templates mode="getText" select="node()"/>

It seems that the template rule would remove the node from the source at the
processing context yet with the apply templates it actually retrieves it-
could you elaborate on this approach - I also need to remove from the node
comment elements  before I count the text contents of the node -

If I add an template
<xsl:template match="draft-comment"  mode="getText"/>

I get  -

( I am building with Ant but this is an xsl related error . )



Date: Tue, 16 May 2006 10:04:22 +0300
To:  xsl-list@xxxxxxxxxxxxxxxxxxxxxx
From: George Cristian Bina <george@xxxxxxxxxxxxx>
Subject: Re: [xsl] Collect word count with xslt2.0 on saxon 8
Message-ID: <44697976.1000108@xxxxxxxxxxxxx>

Hello Karen,

You can get the count of words more easily than that. First you can get
the text in a variable that belongs to an element with topic/topic but
not to other elements inside it with the same mark and then just count
the words in that.
For getting the text once we match on a topic/topic element we use a new
mode for apply-template on which we do nothing on elements with
topic/topic thus we exclude their text content.

The following stylesheet shows that

<xsl:stylesheet version="2.0"
   <xsl:output indent="yes"/>
   <xsl:template match="/">
   <xsl:template match="text()"/>
   <xsl:template match="*[contains(@class, 'topic/topic')]">
     <xsl:variable name="text">
       <xsl:apply-templates mode="getText" select="node()"/>
         <xsl:value-of select="$text"/>

   <xsl:template match="*[contains(@class, 'topic/topic')]"

Current Thread