[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: template match on attribute, copy but change value

Subject: RE: template match on attribute, copy but change value
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 11 Jul 2003 09:46:19 +0100
xsl template match
> Section 7.5 of the Rec says:
> When the current node is an attribute, then if it would be an 
> error to use 
> xsl:attribute to create an attribute with the same name as 
> the current node, 
> then it is also an error to use xsl:copy (see [7.1.3 Creating 
> Attributes 
> with xsl:attribute]).
> 
> I took this to mean that xsl:copy won't work just as using 
> xsl:attribute 
> with the same name as the current node...

On the contrary, it is saying that if the the current node is an
attribute called X, then <xsl:copy/> does exactly the same as
<xsl:attribute name="X"><xsl:value-of select="."/></xsl:attribute>, and
that if <xsl:attribute name="X">... would cause an error, then
<xsl:copy/> will cause an error too.

But you are on the right lines. xsl:copy should be used only for making
an exact copy of an attribute. If you want to change anything (e.g. the
name or the value) then you should use
xsl:attribute to create a new attribute instead.

Michael Kay



however, the below 
> template works 
> (replacing same template from my previous post).  When 
> xsl:copy didn't work 
> and I found that definition I didn't initially test this 
> approach...my gut 
> told me to try it anyways after looking around...
> 
>   <xsl:template match="@myAtt">
>     <xsl:attribute name="myAtt">
>       <xsl:value-of select="'hi there'"/>
>     </xsl:attribute>
>   </xsl:template>
> 
> 
> Well, I guess I'm on my way, but if anybody has comments as to this 
> approach, I would more than welcome them.
> 
> Thanks,
>   Benjamin
> 
> >From: "Benjamin Farrow" <lovinjess@xxxxxxxxxxx>
> >Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >Subject:  template match on attribute, copy but change value
> >Date: Thu, 10 Jul 2003 15:51:08 -0700
> >
> >Hi,
> >  I'm attempting to find a single attribute and change it's value.  I
> >thought this should be simple, but it just doesn't seem to 
> be working.  
> >Looking at the Rec it says that xsl:copy is not allowed to copy the 
> >attribute and change it's value (what it looks like in the 
> archives that I 
> >found as well).  So my question is, can I use the identity 
> transform, then 
> >have a template matching a specific attribute and copy the 
> attribute to the 
> >result, but change it's value?
> >
> >XML File:
> ><test>
> >  <Element myAtt="test">
> >    <child/>
> >  </Element>
> ></test>
> >
> >
> >XSL File:
> ><xsl:stylesheet version="1.0"
> >xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> >
> >  <xsl:template match="/">
> >    <xsl:apply-templates select="*"/>
> >  </xsl:template>
> >
> >  <xsl:template match="@myAtt">
> >    <xsl:copy> <!-- this is ignored and will not let me change the 
> > value
> >-->
> >    <xsl:value-of select="'hi there'"/>
> >    </xsl:copy>
> >  </xsl:template>
> >
> >  <xsl:template match="node()|@*">
> >    <xsl:copy>
> >      <xsl:apply-templates select="node()|@*"/>
> >    </xsl:copy>
> >  </xsl:template>
> >
> ></xsl:stylesheet>
> >
> >Expected Output:
> ><test>
> >  <Element myAtt="hi there">
> >    <child/>
> >  </Element>
> ></test>
> >
> >
> >Thanks for any comments,
> >  Benjamin
> >
> >_________________________________________________________________
> >The new MSN 8: smart spam protection and 2 months FREE*
> >http://join.msn.com/?page=features/junkmail
> >
> >
> >XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> >
> 
> _________________________________________________________________
> Add photos to your messages with MSN 8. Get 2 months FREE*.  
> http://join.msn.com/?page=features/featuredemail
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.