File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes XML and Related Technologies and the fly likes count of how many times a particular template is being called Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Engineering » XML and Related Technologies
Bookmark "count of how many times a particular template is being called" Watch "count of how many times a particular template is being called" New topic
Author

count of how many times a particular template is being called

Tina Desai
Ranch Hand

Joined: Mar 13, 2003
Posts: 365
Can I get a count of how many times a particular
template is being called?
Im thinking of something like -
<xsl:variable name="globalVar" select"1" />
<xsl:template match="Node1">
<xsl:for-each select="$Values">
<xsl:call-template name="T1"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="T1">
<xsl:if test="ValueIsValid">
<xsl:call-template name="T2"/>
</xsl:if>
</xsl:template>
<xsl:template match="T2">
Called for <xsl:value-of select="$globalVar" />
<!-- Increament the var??? -->
</xsl:template>
The final template creates the output.
I showed this for what I want. I know we cannot
reassign variables
in xsl. As I am iterating over $Values, that is a
variable, I am getting
undesired result by using xsl:number or position().
Can anyone give any hints?
Thanks


Alongwith being a good coder, try to be a good professional as well!
Mapraputa Is
Leverager of our synergies
Sheriff

Joined: Aug 26, 2000
Posts: 10065
Tina, you can use position() function inside for-each element even if you iterate over a variable. This is probably the easiest way to do what you want. I do not think any trick with counting inside called template will work... Templates are functions, and functions in XSLT are free from side-effects, they do not keep state. You could accumulate this number in calling template and pass it as a parameter, using
<xsl:variable name="someVar" select="$someVar + 1"/>
trick, but here you aren't update a variable, you create a new one using old value. It won't work with if element, because of scope limitations.
To make position() function work looks more prominent.


Uncontrolled vocabularies
"I try my best to make *all* my posts nice, even when I feel upset" -- Philippe Maquet
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: count of how many times a particular template is being called