Re: [xsl] Inheriting an attribute from first ancestor that defines it

Subject: Re: [xsl] Inheriting an attribute from first ancestor that defines it
From: "Sean O'Halpin" <seanohalpin@xxxxxxxxxxx>
Date: Sat, 26 Oct 2002 11:55:48 +0100
Thank you Jeni for explaining this so clearly.

(Is this the right place to say that I found your
webpages on XSL very helpful indeed? :)

Regards,

Sean

----- Original Message -----
From: "Jeni Tennison" <jeni@xxxxxxxxxxxxxxxx>
To: "Sean O'Halpin" <seanohalpin@xxxxxxxxxxx>
Cc: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Friday, October 25, 2002 7:28 PM
Subject: Re: [xsl] Inheriting an attribute from first ancestor that defines
it


> Hi Sean,
>
> > Specifically, is there a more general way (than specifying
> > test="../@attr", test="../../@attr") to select the first ancestor
> > travelling back up the tree that defines a specific attribute?
>
> Sure: select all the ancestor elements:
>
>   ancestor::*
>
> filter them to select only those with style attributes:
>
>   ancestor::*[@style]
>
> and then pick the first of those that you find:
>
>   ancestor::*[@style][1]
>
> (You can use [1] to select the nearest to the element you're on -- the
> last in document order -- because the ancestor axis is a "reverse"
> axis.)
>
> In your stylesheet, you could just do:
>
> <xsl:template match="page">
>   <page>
>     <xsl:copy-of select="@* | ancestor::*[@style][1]/@style"/>
>     <xsl:apply-templates/>
>   </page>
> </xsl:template>
>
> Cheers,
>
> 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


Current Thread