Subject: Re: 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: 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
|