xsl-list
[Top] [All Lists]

Re: template match on attribute, copy but change value

2003-07-10 16:08:28




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:copy makes a shallow copy of a node, and, by definition, a copy is
identical to the original.  Instead, use the xsl:attribute instruction to
create a new attribute with the same name, but with the new value:

  <xsl:template match="@myAtt">
    <xsl:attribute name="myAtt">hi there</xsl:attribute>
  </xsl:template>

Dave


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



<Prev in Thread] Current Thread [Next in Thread>