|
Subject: Re: [xsl] position() From: Alan Gutierrez <alan-xsl-list@xxxxxxxxx> Date: Thu, 3 Feb 2005 15:03:57 -0500 |
* Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> [2005-02-02 18:06]:
> Alan,
>
> At 04:52 PM 2/2/2005, you wrote:
> > <document>
> > <bundle>
> > <component name="foo"/>
> > <bundle>
> > <component name="foo"/>
> > <target name="foo"/>
> > </bundle>
> > </bundle>
> > </document>
> >
> > Given this XSLT:
> >
> > <xsl:template match="/document//target">
> > <xsl:apply-tempaltes
> > select="ancestor::bundle/component[@name = current()/@name]"/>
> > </xsl:template>
> >
> > How do I select just the first ancestor component?
> >
> > Will this work?
> >
> > ancestor::bundle/component[@name = current()/@name and position() =
> > 1]
> >
> > Or does that refer to the position of component as a child of
> > bundle, therefore matching both components.
>
> The latter.
>
> You can get what you want by grouping all the components and then filtering
> from the group, instead of filtering only on the XPath step:
>
> (ancestor::bundle/component[@name = current()/@name])[1]
>
> By "first" I assume you mean "first in document order".
I mean first ancestor, or youngest ancestor. That would probably
be reverse document order.
Thanks for the explaination. It makes perfect sense to me.
--
Alan Gutierrez - alan@xxxxxxxxx
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] position(), Wendell Piez | Thread | [xsl] String formatting, Bhaskar, Rajan |
| RE: [xsl] with-param problem, Jaime Stuardo | Date | Re: [xsl] xsl:when, xsl:otherwise q, Wendell Piez |
| Month |