RE: [xsl] passing_cousin_content_as_counter

Subject: RE: [xsl] passing_cousin_content_as_counter
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Sun, 1 Aug 2004 23:02:02 +0100
> and while it seems pretty logical to just select the relevant
> COORDINATES_ITEM elements
> and add a d character in front of their number content, it doesn't.It
> produces an identical
> xml doc with the source one.It looks like, it ignores the 
> second template
> and just applies
> the first identity template, producing exactly the same document.

It's a shame that having got that far, you weren't able to find the simple
error in my code. The predicate should be

<xsl:template match="COORDINATES_ITEM[position() =
    /SHAPE/ELEM_INFO/ELEM_INFO_ITEM[position() mod 3 = 1]]">

This now works in Saxon 6.5.3. Unfortunately it shows up an optimization bug
in Saxon 8.0, which is related to
https://sourceforge.net/tracker/index.php?func=detail&aid=998978&group_id=29
872&atid=397617 but not identical to it. Although this predicate does not
use variables explicitly, it is optimized to the XQuery expression

let $temp := /SHAPE/ELEM_INFO/ELEM_INFO_ITEM[position() mod 3 = 1]
return COORDINATES_ITEM[position() = $temp]

and this is hitting problems in allocating stack space for variables in
patterns.

Michael Kay

Current Thread