[xsl] xsl:copy - change attributes and tag name

Subject: [xsl] xsl:copy - change attributes and tag name
From: "Matias Woloski" <woloski@xxxxxxxx>
Date: Sat, 6 Apr 2002 16:43:18 -0300
Hi folks!
I have this parent-child xml.
<TreeData>
	<Indice IdIndice="1" Nombre="Omint Analisis" />
	<Indice IdIndice="3" IdRef="1" Nombre="OMINT: Precios"/>
	<Indice IdIndice="4" IdRef="1" Nombre="210 / Omint"/>
	<Indice IdIndice="5" Nombre="Swiss Medical Analisis"/>
	<Indice IdIndice="6" IdRef="5" Nombre="Swiss Precios"/>
	<Indice IdIndice="7" IdRef="1" Nombre="310 / Omint"/>
	<Indice IdIndice="8" IdRef="7" Nombre="Cobertura" IdDoc="1"/>
</TreeData>

What I want to do is putting it into a hierarchical format, which I do with
this xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
<xsl:template match="/">
<tree>
 <xsl:apply-templates select="TreeData/*[not(@IdRef)]"/>
</tree>
</xsl:template>

<xsl:template match="*|@*">
<xsl:copy>
<xsl:apply-templates select="//*[@IdRef = current()/@IdIndice]|@*"/>
 </xsl:copy>
</xsl:template>
</xsl:stylesheet>

So I get
<tree>
	<Indice IdIndice="1" Nombre="Omint Analisis">
		<Indice IdIndice="3" IdRef="1" Nombre="OMINT: Precios Directos" />
		<Indice IdIndice="4" IdRef="1" Nombre="210 / Omint" />
		<Indice IdIndice="7" IdRef="1" Nombre="310 / Omint">
			<Indice IdIndice="8" IdRef="7" Nombre="Cobertura" IdDoc="1" />
		</Indice>
	</Indice>
	<Indice IdIndice="5" Nombre="Swiss Medical Analisis">
		<Indice IdIndice="6" IdRef="5" Nombre="Swiss Precios" />
	</Indice>
</tree>

Now I want 3 things:
1. instead of generate <Indice> tags I want to get <tree> tags.
So I would get
<tree>
	<tree ... />
	<tree ..>
		<tree ..>
	</tree>
</tree>

2. I want to change the "Nombre" attribute to "text" attribute
So I would have
	<tree text="210/Omint" ...>
3. How do I add another attribute to each entry?
	<tree text="..." addedAttr="something">

thanks in advance!
Matias



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread