this is my XML:
<?xml version="1.0" encoding="utf-8"?>
<records>
<CompanyCode>12345</CompanyCode>
<FirstName>Dan<FirstName>
<LastName>Haggerty<LastName>
<TeamMemberRole>CS Director<TeamMemberRole>
</records>
<records>
<CompanyCode>12345</CompanyCode>
<FirstName>And<FirstName>
<LastName>Onemore<LastName>
<TeamMemberRole>CS Director<TeamMemberRole>
</records>
<records>
<CompanyCode>12345</CompanyCode>
<FirstName>And<FirstName>
<LastName>Twomore<LastName>
<TeamMemberRole>DifferentRole<TeamMemberRole>
</records>
<records>
<CompanyCode>54321</CompanyCode>
<FirstName>And<FirstName>
<LastName>Twomore<LastName>
<TeamMemberRole>DifferentRole<TeamMemberRole>
</records>
This is my Required Output:
<records>
<Company>
<CompanyCode>12345</CompanyCode>
<Role>
<TeamMemberRole>CS Director<TeamMemberRole>
<FirstName>Dan<FirstName>
<LastName>Haggerty<LastName>
<FirstName>And<FirstName>
<LastName>Onemore<LastName>
</Role>
<Role>
<TeamMemberRole>DifferentRole<TeamMemberRole>
<FirstName>And<FirstName>
<LastName>Twomore<LastName>
</Role>
</Company>
<Company>
<CompanyCode>54321</CompanyCode>
<Role>
<TeamMemberRole>DifferentRole<TeamMemberRole>
<FirstName>And<FirstName>
<LastName>Twomore<LastName>
</Role>
</Company>
</records>
My Current XSL:
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:element name="records">
<xsl:for-each-group select="/records" group-by="CompanyCode">
<xsl:element name="Company">
<xsl:value-of select="CompanyCode"/>
<xsl:for-each-group select="current-group()" group-by ="TeamMemberRole">
<xsl: element name "role">
<Role><xsl:value-of select="TeamMemberRole"/><Role>
<FirstName><xsl:value-of select="FirstName"/><FirstName>
<LastName><xsl:value-of select="LastName"/><LastName>
</xsl:element>
</xsl:for-each-group>
</xsl:element>
</xsl:for-each-group>
</xsl:element>
My Current Output:
<Company>
<CompanyCode>12345</wd:CustomerId>
<Role>
<wd:Role>CS Director</wd:Role>
<wd:FirstName>Dan</wd:FirstName>
<wd:LastName>Haggerty</wd:LastName>
<Role>
<Role>
<Role>DifferentRole</wd:Role>
<wd:FirstName>and</wd:FirstName>
<wd:LastName>twomore</wd:LastName>
<role>
<Company>
<Company>
<CompanyCode>54321</wd:CustomerId>
<Role>
<wd:Role>DifferentRole</wd:Role>
<wd:FirstName>and</wd:FirstName>
<wd:LastName>twomore</wd:LastName>
<Role>
<records>
Please don't my syntax errors. I'm more concerned at the grouping logic. If You see in current output, For the 1st company only one name appeared instead of two names for the first role. Please help.(info: There can many people for same role in one company and the names of role are same in all companies.)