Subject: Re: [xsl] super basic xsl question From: António Mota <amsmota@xxxxxxxxx> Date: Thu, 13 Jan 2005 18:36:08 +0000 |
Or maybe this is more stylish... <xsl:template match="node"> <xsl:apply-templates select="description"/> <ul> <xsl:apply-templates select="datum"/> </ul> </xsl:template> <xsl:template match="description"> <h1><xsl:value-of select="."/></h1> </xsl:template> <xsl:template match="datum"> <li><xsl:value-of select="."/></li> </xsl:template> On Thu, 13 Jan 2005 18:25:16 +0000, Antsnio Mota <amsmota@xxxxxxxxx> wrote: > You can add > <xsl:template match="description"/> > > cause your description is allready been processed in the first > template and you don't want to process it twice. > > > On Thu, 13 Jan 2005 13:10:00 -0500, Jeb Boniakowski <jeb@xxxxxxxxxxx> wrote: > > Wendell-- > > > > Thanks for the reply. This is the kind of info I'm having a hard time > > getting from like w3schools.com, etc. > > > > In this particular case, though, I want the template that matches the > > value of <child> to be agnostic to the markup that is in there, with no > > more template processing, I just want whatever was already done (by > > this point, that chunk of xml has been processed by other sheets, and > > will be processed by later sheets) so I didn't want to do an explicit > > match for the link tag. > > > > In general though, on the topic of apply-templates, there is a larger > > issue that trips me up. Oftentimes, it seems that I mess up my set of > > templates in such a way that things get matched and copied to the > > output tree automatically, even though they are matched. To deal with > > this, I've been sticking a template at the top of my sheets that is: > > > > <xsl:template match="text()"/> > > > > Is this bad style? Is it a crappy hack to deal with messed up > > templates? Or is it the correct way to suppress default rules? > > > > I have situations where I have things along the lines of: > > > > <node> > > <description>Foo</description> > > <datum>1</datum> > > <datum>2</datum> > > </node> > > > > When I do something like: > > > > <xsl:template match="node"> > > <h1><xsl:value-of select="description"/></h1> > > <ul><xsl:apply-templates/><ul> > > </xsl:template> > > > > <xsl:template match="node/datum"> > > <li><xsl:value-of select="."/></li> > > </xsl:template> > > > > I end up with: > > > > <h1>Foo</h1> > > Foo <!-- Extraneous foo that I don't want --> > > <ul> > > <li>1</> > > <li>2</2> > > </ul> > > > > Tacking a <xsl:template match="text()"/> seems to catch the 'Foo' and > > kill it, but why do I have to do this? Does the <apply-templates/> in > > node automatically copy the text values of any child nodes that are not > > explicitly matched? If so, why? Is it better to have an additional > > template that specifically matches 'description' and does nothing? Or > > to take the <h1><xsl:value-of select="description"/></h1> out and move > > it into this explicit template? Or should I be doing something more > > like <xsl:apply-templates select="datum"/>? > > > > Again, thanks. > > > > jeb.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] super basic xsl question, António Mota | Thread | RE: [xsl] super basic xsl question, Michael Kay |
Re: [xsl] super basic xsl question, António Mota | Date | RE: [xsl] super basic xsl question, Michael Kay |
Month |