Re: [xsl] Insert a tag inside a text

Subject: Re: [xsl] Insert a tag inside a text
From: knocte <knocte@xxxxxxxxx>
Date: Mon, 12 Sep 2005 17:01:17 +0200
2005/9/12, Joris Gillis <roac@xxxxxxxxxx>:
> Hi,
> On Mon, 12 Sep 2005 15:10:46 +0200, knocte <knocte@xxxxxxxxx> wrote:
>
> > I am trying to figure out if it is possible to make a XSLT
> > transformation which could receive this XML file:
> >
> > <page>
> > <p>
> >   <label for="txtElement" accesskey="a">
> >     Name:
> >   </label>
> >   <input type="text" id="txtElement" />
> > </p>
> > </page>
> >
> >
> > And transform it to the following, inserting a <span> tag inside a
> > specific position of a string:
> >
> > <html>
> > <head><title></title></head>
> > <body>
> > <p>
> >   <label for="txtElement" accesskey="a">
> >     N<span class="accesskey">a</span>me:
> >   </label>
> >   <input type="text" id="txtElement" />
> > </p>
> > </body>
> > </html>
> >
> > Is this possible?
>
> Absolutely,
>
> Here's a working example solution:
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> <xsl:output method="xml" indent="yes"/>
> <xsl:strip-space elements="*"/>
>
> <xsl:variable name="version" select="/xsl:stylesheet/@version"/>
>
> <xsl:template match="/">
> <html>
>         <head><title></title></head>
>         <xsl:apply-templates/>
> </html>
> </xsl:template>
>
> <xsl:template match="page">
> <body><xsl:apply-templates/></body>
> </xsl:template>
>
> <xsl:template match="node()|@*">
>         <xsl:copy>
>                 <xsl:apply-templates select="node()|@*"/>
>         </xsl:copy>
> </xsl:template>
>
> <xsl:template match="*[@accesskey]/text()[contains(.,../@accesskey)]">
>         <xsl:value-of select="substring-before(.,../@accesskey)"/>
>         <span class="accesskey"><xsl:value-of
select="../@accesskey"/></span>
>         <xsl:value-of select="substring-after(.,../@accesskey)"/>
> </xsl:template>
>
> </xsl:stylesheet>
>

Thanks!! It works flawlessly.

  Andrew	[  knocte  ]

--

Current Thread