Re: Newbie help needed BAD!!!

Subject: Re: Newbie help needed BAD!!!
From: Oliver Becker <obecker@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 29 Aug 2000 11:05:45 +0200 (MET DST)
Matt,

> Hi everyone. Man I need help bad...I want to write an xsl that will
> basically copy an xml tree, but allow me to chnage the values of certain
> nodes. For example:
> 
> <highlevel>Highest Level
> <innernode>This is an innernode
> <lownode>This is a low-level node</lownode>
> </innernode>
> </highlevel>
> 
> I want to copy this, but change the text of <innernode>, such as 
> 
> <highlevel>Highest Level
> <innernode>I have edited this text
> <lownode>This is a low-level node</lownode>
> </innernode>
> </highlevel>
> 
> This seems so trivial, but...I tried :
> 
> <xsl:template match="/">
> 	<xsl:copy-of select="."/>
> </xsl:template>
> <xsl:template match="innernode">
> 	<innernode>
> 	I have edited this node
> 	</innernode>
> </xsl:template>
> but it never applies the innernode template

You shouldn't use xsl:copy-of.
This makes a deep copy without processing the inner elements.
Use xsl:copy and xsl:apply-templates - see the identity transformation
in the XSLT spec http://www.w3.org/TR/xslt#copying

<xsl:template match="@*|node()">
   <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
</xsl:template>

Now you can add special templates for special element nodes, such as
innernode. But note: to process lownode you should call xsl:apply-templates
as well. So your template becomes

<xsl:template match="innernode">
	<innernode>
	I have edited this node
	<xsl:apply-templates select="*" />  <!-- only elements, no text nodes 
-->
	</innernode>
</xsl:template>

I haven't tested it, but it should work.
Cheers,
Oliver


/-------------------------------------------------------------------\
|  ob|do        Dipl.Inf. Oliver Becker                             |
|  --+--        E-Mail: obecker@xxxxxxxxxxxxxxxxxxxxxxx             |
|  op|qo        WWW:    http://www.informatik.hu-berlin.de/~obecker |
\-------------------------------------------------------------------/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread