Re: [xsl] Problem using Key on multiple elements

Subject: Re: [xsl] Problem using Key on multiple elements
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Fri, 12 Aug 2005 22:49:11 +0200
Hi,
Tempore 15:20:00, die 08/12/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Sreenath Juluri <jssreenath@xxxxxxxxx>:

My source xml looks something like this.
... Ill-formed XML

An attempt to construct well-formed XML out of it (please correct the namespace) <xtvd xmlns="a"> <productionCrew> <crew program="EP3297910048"> <member> <role>Actor</role> <givenname>Peter</givenname> <surname>McCauley</surname> </member> <member> <role>Actor</role> <givenname>Michael</givenname> <surname>Sinelnikoff</surname> </member> </crew> <crew program="EP3556823923"> <member> <role>Director</role> <givenname>Michael</givenname> <surname>Sinelnikoff</surname> </member> <member> <role>Actor</role> <givenname>Michael</givenname> <surname>Offer</surname> </member> <member> <role>Executive Producer</role> <givenname>John</givenname> <surname>Landis</surname> </member> </crew> </productionCrew> </xtvd>

Now in my transformed xml there should be only one element for each
person irrespective of the role. for eg in the above piece of xml
there shud b only one element for Michael Sinelnikoff.

Try using a key like this:


<xsl:key name="roleNames"
match="a:xtvd/a:productionCrew/a:crew/a:member"
use="concat(a:givenname,'+',a:surname)"/>

and a loop like this:
<xsl:for-each select="a:xtvd/a:productionCrew/a:crew/a:member
	[generate-id()=generate-id(key('roleNames',
		concat(a:givenname,'+',a:surname))[1])]
	/a:givenname">
</xsl:for-each>

regards,
--
Joris Gillis (http://users.telenet.be/root-jg/me.html)
B+N N1N;N.N8N5N9N1 N:N1N9 ON? N;N,N4N9 ON,N=ON1 N2N3N1N/N=N?ON= N1OO ON,N=O	B;

Current Thread