Subject: RE: 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
|