RE: [xsl] Moving an attribute from a node to a child node

Subject: RE: [xsl] Moving an attribute from a node to a child node
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Thu, 3 Jul 2003 11:47:52 +0100
> 
> 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


Current Thread