Re: [xsl] Insert a tag inside a text

Subject: Re: [xsl] Insert a tag inside a text
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Mon, 12 Sep 2005 15:37:07 +0200
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>


-- "NN= N?N/N4N1 O ON9 N?ON4N-N= N?N/N4N1" - N#O N:ON1ON7O

Current Thread