I am trying to move an attribute from one node to child node.
This seems like an easy task, but I've been having issues.
Here is a sample XML document:
<myXML>
<NodeA reason="because">
<NodeB> ..... </NodeB>
</NodeA>
</myXML>
I need to move the attribute 'reason' to NodeB.
<myXML>
<NodeA>
<NodeB reason="because"> ..... </NodeB>
</NodeA>
</myXML>
This looks like a transformation that should be based on the identity
template with exceptions:
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="NodeB">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="../@reason"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="NodeA">
<xsl:copy>
<xsl:copy-of select="@*[local-name() != 'reason']"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
Michael Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list