|
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 |