xsl-list
[Top] [All Lists]

RE: Moving an attribute from a node to a child node

2003-07-03 03:47:52

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



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