Subject: Re: [xsl] Selecting/matching based on inherited attributes From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Fri, 19 Apr 2002 10:33:32 +0100 |
Wendell wrote: > "all myelem elements for which > a first ancestor-or-self with an @att1 has @att1='d' > and > a first ancestor-or-self with an @att2 has @att2='c'" > > which is what you say you want. > > OTOH, this doesn't really help, does it? The whole tree will still > be walked collecting myelem elements, to be filtered with the > predicate. (I don't think there's a way to avoid walking the whole > tree one way or another to get those myelems, since the whole idea > is not to miss any.) The other approach would be to work down from the top of the tree, keeping track of the values of @att1 and @att2 as you go. Something like: <xsl:template match="*"> <xsl:param name="att1" select="/.." /> <xsl:param name="att2" select="/.." /> <xsl:apply-templates> <xsl:with-param name="att1" select="($att1 | @att1)[last()]" /> <xsl:with-param name="att2" select="($att2 | @att2)[last()]" /> </xsl:apply-templates> </xsl:template> until you finally get to the 'myelem' elements and can test the values: <xsl:template match="myelem"> <xsl:param name="att1" select="/.." /> <xsl:param name="att2" select="/.." /> <xsl:if test="$att1 = 'd' and $att2 = 'c'"> ... </xsl:if> </xsl:template> Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Selecting/matching based , Wendell Piez | Thread | RE: [xsl] Selecting/matching based , Michael Kay |
RE: [xsl] Adding subtotals to a rep, Michael Kay | Date | Re: [xsl] Invalid Character, Vasu Chakkera |
Month |