Re: [xsl] rephrased: passing parameters to generic templates

Subject: Re: [xsl] rephrased: passing parameters to generic templates
From: "andrew welch" <andrew.j.welch@xxxxxxxxx>
Date: Wed, 12 Apr 2006 17:41:48 +0100
On 4/12/06, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote:
> At 06:37 AM 4/12/2006, drkm wrote:
> >andrew welch wrote:
> >
> > > <xsl:template match="a">
> > >   <a href="{ancestor::para/docBase}">.....
> >
> >   I'm not sure, but I think the OP needs "ancestor::para[1]/...",
> >doesn't it?
>
> Not if there's only one (which seems likely). Even if there's more
> than one, when ancestor::para/docBase is turned into a string, the
> value of the first such element in document order is taken.
>
> In XPath 2.0 you could get an error for relying on this, however,
> since in 2.0 a sequence of more than one node can't be converted into
> a string. There, you might be better off forcing it to be the first,
> as in (ancestor::para/docBase)[1].

In an AVT the values get concatenated using a space separator... but
I'm guessing you meant as arguments to functions...

I disagree with your second point though, using (..)[1] should be
avoided as it will hide the fact that you selected multiple nodes when
you only wanted one - this is the real strength of 2.0 over 1.0 - in
1.0 you would only trap this by examining the output, in 2.0 you get
an error.

Current Thread