This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Ancestors
Thanks Jeni, David, et all:
That did the trick.
Carmelo
----- Original Message -----
From: "Jeni Tennison" <jeni@jenitennison.com>
To: "Carmelo Montanez" <carmelo@nist.gov>
Cc: <xsl-list@lists.mulberrytech.com>
Sent: Thursday, November 08, 2001 11:41 AM
Subject: Re: [xsl] Ancestors
> Hi Carmelo,
>
> > If I am the current context node and I wanted to know if any of my
> > ancestors had the string "region" in its name, how will go about
> > that. I tried a number of combination with no success.
> >
> > I think is something along the lines:
> >
> > <xsl:if test = "contains(name(ancestor::*),'region')"/>, but it
does
> > not seems to work.
>
> When you use the name() function on a node set, it tells you the name
> of the *first* node in that node set (in document order). So:
>
> name(ancestor::*)
>
> will always give you the name of the document element in your XML
> document.
>
> Instead, you need to go through all the ancestor elements one by one
> and filter in those whose name contains the string 'region' using a
> predicate:
>
> ancestor::*[contains(name(), 'region')]
>
> This will return a node set containing all the ancestors whose name
> contains the string 'region'. If there are nodes in that node set,
> then it evaluates as true, if not, it evaluates as false.
>
> I hope that helps,
>
> Jeni
>
> ---
> Jeni Tennison
> http://www.jenitennison.com/
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list