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