RE: [xsl] Change text on given node at runtime

Subject: RE: [xsl] Change text on given node at runtime
Date: Thu, 24 Jul 2003 10:26:59 +0100
Yes, having looked at Jeni's XSL it is way over the top for my needs and
doesn't seem to actually do what I want.  Thanks to Jim Fuller for directing
me to it though - I'm sure I'll use it elsewhere  :0)

Mukul, the code you supplied is what I tried first of all but it doesn't
copy across attributes.

Here is where I am so far...

Vendor:  Apache Software Foundation
Version:  1

The following works fine but once it hits the node and question, and
processes it OK, it does not continue down into deeper nests below that
node. So I know what I want to do but can't quite crack how to do it. Any
help with this would be gratefully received.

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="";

<xsl:param name="tag"/>     <!-- name of node containing text to be changed
<xsl:param name="text"/>    <!-- new text to be placed in node -->

 <xsl:template match="node()|@*">

   <xsl:if test="name()=$tag">
    <xsl:apply-templates select="@*"/>
     <xsl:value-of select='$text'/>

   <xsl:if test="not(name()=$tag)">
    <xsl:for-each select="@*|node()">
      <xsl:apply-templates select="@*|node()"/>




-----Original Message-----
From: Mukul Gandhi [mailto:mukulw3@xxxxxxxxx]
Sent: 23 July 2003 17:54
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Change text on given node at runtime

Hi Jeff ,
  You can try a XSL something like below. This will
replace the contents of tag <A> with 'Some new text'
and copy other things to output as it is. But you want
to provide the tag name and the new text, *at run
time*. If you can tell what is your XSLT processor and
*how you would like to supply the 2 parameters at run
time*, i can try modifying the stylesheet accordingly.

 i don't know if Jeni's XSL is meeting your
requirement(it looks quite complicated to me for your


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
<xsl:output method="xml" version="1.0"
encoding="UTF-8" indent="yes"/>
 <xsl:template match="@* | node()">
     <xsl:apply-templates />
 <xsl:template match="A">
   <A>Some new text</A>

--- wrote:
> Hi
> Can you please give some guidance on this...
> I would like to be able, at runtime, to parse an XML
> file and change 
> <A>Original text</A>
> to
> <A>Some new text</A>
> On the next occasion I might want to do this...
> <F>Old text</F>
> change to
> <F>New text</F>
> So at runtime I need to pass in two parameters that
> specify the required
> node and the new text for it.
> There are two issues: Either change the text in
> every node called <A>
> throughout the document or else only change <A>
> along a particular path. A
> solution to either (or both?) option will do for me.
> Of course the rest of the document must remain in
> its entirety, e.g.
> attributes, children etc.
> Many thanks for any help given.
> Regards
> Jeff 
>  XSL-List info and archive: 

Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software

 XSL-List info and archive:

 XSL-List info and archive:

Current Thread