[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: "Benjamin Farrow" <lovinjess@xxxxxxxxxxx>
Date: Thu, 10 Jul 2003 16:03:58 -0700
xsl attribute copy
Hi again,

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...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



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.