Re: [xsl] Apply-templates - how to omit top level element tags?

Subject: Re: [xsl] Apply-templates - how to omit top level element tags?
From: António Mota <amsmota@xxxxxxxxx>
Date: Wed, 7 Sep 2005 21:01:00 +0100
Then you use modes.

> <xsl:apply-templates select="Name" mode="PutH1"/>
> <xsl:apply-templates select="Name" mode="PutSomeOtherThing"/>

> <xsl:template match="Name" mode="PutH1">
>    <h1>
>       <xsl:value-of select="."/>
>    </h1>
> </xsl:template>

> <xsl:template match="Name" mode="PutSomeOtherThing">
>    <h2><b>
>       <xsl:value-of select="."/>
>    </b></h2>
> </xsl:template>

On 9/7/05, Mike Schinkel <mikes@xxxxxxxxx> wrote:
> Thanks.  Question, I use "Name" in many contexts in my XML.  How can I do
this when I don't always want "Name" to be handled that way?
>
> -Mike
>
> -----Original Message-----
> From: Antsnio Mota [mailto:amsmota@xxxxxxxxx]
> Sent: Wednesday, September 07, 2005 3:44 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Apply-templates - how to omit top level element tags?
>
> You should use
> <h1><xsl:apply-templates select="Name"/></h1>
>
> and then a  template for Name
>
> <xsl:template match="Name">
>   <xsl:value-of select="."/>
> </xsl:template>
>
> or better
>
> <xsl:apply-templates select="Name"/>
> <xsl:template match="Name">
>    <h1>
>       <xsl:value-of select="."/>
>    </h1>
> </xsl:template>
>
>
>
> On 9/7/05, Mike Schinkel <mikes@xxxxxxxxx> wrote:
> > To all:
> >
> > I'm trying to figure out how to use <xsl:apply-templates> (or anything
> > else) to get the right output:
> >
> > I've got an XML file and am generated XHTML.
> >
> > In my XSL file, I have the following variable and template:
> >
> > ==========================================
> > <xsl:variable name="trademark-symbol">&#8482;</xsl:variable>
> > <xsl:template match="htsg:TrademarkSymbol" name="htsg:TrademarkSymbol">
> >         <xsl:value-of select="$trademark-symbol"/> </xsl:template>
> > ==========================================
> >
> > In my XML file, I have a fragment that looks like this:
> >
> > ==========================================
> > <Name>This is the Title of the
> > Publication<myns:TrademarkSymbol/></Name>
> > ==========================================
> >
> > I want to generate output that looks like this:
> >
> > ==========================================
> > <h1>This is the Title of the Publication(tm)</h1>
> > ==========================================
> >
> > However, if I use this in my XSL:
> >
> > ==========================================
> > <h1><xsl:apply-templates select="Name"/></h1>
> > ==========================================
> >
> > I get the following that includes the <Name> element:
> >
> > ==========================================
> > <h1><Name>This is the Title of the Publication(tm)</Name></h1>
> > ==========================================
> >
> > When I try instead to use this:
> >
> > ==========================================
> > <h1><xsl:value-of select="Name/text()"/></h1>
> > ==========================================
> >
> > I just get this w/o the trademark:
> >
> > ==========================================
> > <h1>This is the Title of the Publication</h1>
> > ==========================================
> >
> > Again, this is what I want to generate as output:
> >
> > ==========================================
> > <h1>This is the Title of the Publication(tm)</h1>
> > ==========================================
> >
> >
> > I look forward and appreciate any suggestions, even those that might
> > have be taking a completely different route, but I also really want to
> > understand how to accomplish this using apply-templates or value-of or
> > whatever.
> >
> > Thanks in advance for your help.
> >
> > -Mike Schinkel
> > Publisher - How-To-Select(tm) Guides
> > http://www.howtoselectguides.com/
> > mailto:mikes@xxxxxxxxxxxxxxxxxxxxx
> > 404-591-5701 (V)
> > 404-591-5731 (F)

Current Thread