xsl-list
[Top] [All Lists]

Re: [xsl] Cannot use a parameter value in the group-starting-with attribute?

2010-05-14 15:18:55
Thank you! That did work. Your clarification is extremely helpful.

Peter

On Fri, May 14, 2010 at 4:07 PM, David Carlisle 
<davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:
On 14/05/2010 20:49, Peter Desjardins wrote:

Hi. I'm writing a 2.0 stylesheet and my processor is Saxon HE 9.2.1.1.
Also, I'm just starting out with XSLT.

I am trying to create a template with parameters that will use the
for-each-group element. I find that I cannot use a parameter value in
the group-starting-with attribute.

There are two problems there, one is that patterns use a restricted syntax
compared to xpath, but more importantly parameters and variables in xpath
hold _values_ (as they would in c or fortran) not fragments of syntax 9as
they would in a shell scripting language)

so when you go   <xsl:with-param name="starting-element" select = "h1" />

the parameter does not hold the fragment of a pattern "h1" it holds the
result of ebaluating teh expression h1 at that point, which is a possibly
empty  sequence of h1 nodes.

the this works

 <xsl:for-each select = "$starting-element">

but it is not (at that point) selecting h1 elements it is simply iterating
over the list of elements that has already been selected and stored in the
$starting-element variable.

but this could not work even if it were not a syntax error

<xsl:for-each-group select = "*" group-starting-with = "$starting-element">

the grouping attributes need to take patterns or expressions used to filter
the nodes selected, not take a sequence of nodes.

so do not pass in a sequence of nodes, pass in a string:

<xsl:with-param name="starting-element" select = "'h1'" />

(note the extra quotes(

then you can use that string in a pattern


<xsl:for-each-group select = "*"
group-starting-with = "*[name()=$starting-element]">


David


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>