[xsl] copying a node

Subject: [xsl] copying a node
From: lists@xxxxxxxxxxxxx
Date: Wed, 08 Mar 2006 00:44:05 +0100
Hello List, 

I have a simple problem but I'm not sure whether xslt is the proper tool. 

I have thousands of XML files of very similar structure strictly adhering to a common document type. All documents have a node that I need to copy together with the attributes and the children and the attributes to a new node with a different value in on attribute. The reulting document must be the same plus that extra node. 

Example: 

the following file ...

<?xml version="1.0" encoding="utf-16" ?>
<filter name="ARMCheckTest">
	<group section="mini">
	</group>
	<group section="basic">
		<test name="testCheck1"></test>
		<test name="testCheck2"></test>
	</group>
</filter>
 
... needs to be transformed into

<?xml version="1.0" encoding="utf-16" ?>
<filter name="ARMCheckTest">
	<group section="mini">
	</group>
	<group section="basic">
		<test name="testCheck1"></test>
		<test name="testCheck2"></test>
	</group>

	<group section="basic-alt">
		<test name="testCheck1"></test>
		<test name="testCheck2"></test>
	</group>
</filter>

That is the node "group" with the attribute section="basic" needs to be duplicated and the value for section must be modified. 

I can think of a couple of implementations using xsl:foreach or xsl:if but I'm sure I would come up with something alittle too complicated. What's the easiest implemetation to do this?

thanks

jacques

Current Thread