Subject: Re: [xsl] match on attribute anywhere From: Trevor Nash <tcn@xxxxxxxxxxxxx> Date: Thu, 14 Feb 2002 10:34:57 +0000 |
Chris wrote: >The named template approaches were better, though I'm not sure they >directly addressed your problem. Try this: > ><xsl:template name="test-mark"> > <xsl:choose> > <xsl:when test="@mark"> > <span style="color:#FF0000"> > <xsl:apply-templates/> > </span> > </xsl:when> > <xsl:otherwise> > <xsl:apply-templates/> > </xsl:otherwise> > </xsl:choose> ></xsl:template> > ><xsl:template match="whatever"> > <xsl:call-template name="test-mark"/> ></xsl:template> > >~Chris I thought the point of the question was that there were several 'whatever-else'-s, each with *specific* processing except for the one common bit: whatever was to be generated should be wrapped in a 'span' to change the colour if @mark='1' was present. Andrew? If I am right, here is a tidier version of my first attempt: For each element type or patterm 'x' write: <!-- add a mode to the template you already have --> <xsl:template match="x" mode="process"> do whatever for element type 'x', including possibly xsl:apply-templates *without* a mode. </xsl:template> To do the marking add: <!-- pick up any elements with a mark attribute --> <xsl:template match="*[@mark='1']" priority="2"> <span style="color:#FF0000"> <!-- go back and do the standard thing, using a different mode so that you do not recursively trigger this template --> <xsl:apply-templates select="." mode="process" /> </span> </xsl:template> <!-- and the others --> <xsl:template match="*"> <xsl:apply-templates select="." mode="process" /> </xsl:template> Though this version is easier to maintain (you don't have to have that extra match+call for every template), its probably slower - it does a template select twice for every node, where the original only did a double select for marked nodes. But then it had roughly twice as many templates to look at, so it could go either way. Regards, Trevor Nash -- Traditional training & distance learning, Consultancy by email Melvaig Software Engineering Limited voice: +44 (0) 1445 771 271 email: tcn@xxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] match on attribute anywhe, Christopher R. Maden | Thread | RE: [xsl] match on attribute anywhe, Andrew Welch |
RE: [xsl] Many sets of eyes ..., Curtis Burisch | Date | Re: [xsl] determining position of a, Jeni Tennison |
Month |