[xsl] merging generic elements in a parent-child relationship Part II

Subject: [xsl] merging generic elements in a parent-child relationship Part II
From: "Matias Woloski" <woloski@xxxxxxxx>
Date: Thu, 27 Jun 2002 14:47:20 -0300
Hi guys!
thanks for the help and the stylesheets :)

Right now I've decided to go for the most simple one and began to make some
modifications to suit my needs

The XML is this one:
<root>
	<Persona id="abc" idCountry="1"/>
	<Persona id="abcd" idCountry="1"/>
	<b id="b1" idPersona="abc"/>
	<b id="b2" idPersona="abc"/>
	<b id="b3" idPersona="abcd"/>
	<c id="c1" idb="b1"/>
</root>

This is the stylesheet I have. Note the TopElement param. This is something
I'm gonna know.

1 <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
2	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
3	<xsl:param name="TopElement" select="Persona" />
4 <xsl:template match="root">
5   <root>
6     <xsl:apply-templates select="//Persona"/>
7   </root>
8 </xsl:template>
9
10  <xsl:template match="*">
11   <xsl:element name="{name()}">
12     <xsl:copy-of select="@*"/>
13     <xsl:apply-templates select="../*[@idPersona=current()/@id or
@idb=current()/@id]"/>
14   </xsl:element>
15  </xsl:template>
16 </xsl:stylesheet>

There are some things I would like to know
1. Line 6. How can I select based on the TopElement param. I would like to
do something like
<xsl:apply-templates select="//$TopElement" />

2. Line 13. I'd like to make this on runtime. I mean, instead of having
@idPersona I'd like to have @concat('id',name()). obviously this cannot be
done. Is this possible to do? I've read the Things XSL can't do on
http://www.dpawson.co.uk and there is one that maybe answer my questions

"...There is no way in XSLT of constructing XPath expressions (e.g. variable
references) at run-time..."

So if this is true, I'm looking for a workaround on this...

thanks for your help,
Matias




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


Current Thread