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 |