This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: find the maximum node count and loop with the count
- To: jayarangas at eurocenter dot lk
- Subject: Re: [xsl] find the maximum node count and loop with the count
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- Date: Mon, 18 Jun 2001 00:22:38 -0700 (PDT)
- Cc: xsl-list at lists dot mulberrytech dot com
- Reply-To: xsl-list at lists dot mulberrytech dot com
Jayaranga Subasinghe wrote:
> hi,
> can anybody give me the soluton for that?
> i want to find the maximum node count and print a text line equals to that
>maximum node count.
Hi Jayaranga,
It is a little bit difficult to understand what maximum node count (of what?) you
need and for what purposes.
I'm assuming here that you need a large repository of "raw nodes" upon which to
build a non-recursive loop (the method of Wendell Piez).
The answer is that you may include in your stylesheet very large xml documents and
achieve as big a count as you may need.
For more information see:
http://www.vbxml.com/snippetcentral/main.asp?view=viewsnippet&lang=&id=v20010324001431
Any stuff can be included under a namespace-uri, different from
the standard XSLT namespace-uri, like this:
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:Shakespeare="Shakespeare">
<Shakespeare:Hamlet>
<!-- Hamlet goes here -->
</Shakespeare:Hamlet>
<!-- the rest of the stylesheet -->
</xsl:stylesheet>
As it can be seen, I included Jon Bosak's xml version of "Hamlet"
(http://www.stoa.org/bard/).
The following small template will return the number of nodes
(the maximum recursion depth that can be avoided) we can now use
to organise non-recursive loops:
<xsl:template match="/">
<xsl:variable name="st" select="document('')"/>
<xsl:value-of select=" count($st//node() | $st//@* | $st//namespace::*)"/>
</xsl:template>
For the above stylesheet this number is: 32032.
As some people noted, this solution could be called an ugly one.
Or, to quote an xml fragment from our stylesheet,
<SPEECH>
<SPEAKER>MARCELLUS</SPEAKER>
<LINE>Something is rotten in the state of Denmark. </LINE>
</SPEECH>
However, it is much more ugly to watch the slow and painful agony
of IIS crashing only because we used a beautiful, deep recursive processing.
Hope this helped.
Cheers,
Dimitre Novatchev.
__________________________________________________
Do You Yahoo!?
Spot the hottest trends in music, movies, and more.
http://buzz.yahoo.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list