xsl-list
[Top] [All Lists]

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

2006-04-12 09:42:05
On 4/12/06, Wendell Piez <wapiez(_at_)mulberrytech(_dot_)com> 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.

--~------------------------------------------------------------------
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>