Subject: Re: 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;
|