Muenchian grouping is an options.
But when you mean by grouping the data on the basis of marks obtained., do you mean by group the student details based on the marks like group students who got more than 50 (or x mark) in a group and others in to a group? Gives us the detail and sample input instances Yes using muenchian grouping in your map you can achieve grouping.
for your scenario i used below xml as input,
<ns0:Students xmlns:ns0="http://BTSTempProj.StudentDetailsIn">
<Student>
<StudentID>StudentID_0</StudentID>
<StudnetName>StudnetName_0</StudnetName>
<StudentMarks>10</StudentMarks>
</Student>
<Student>
<StudentID>StudentID_0</StudentID>
<StudnetName>StudnetName_0</StudnetName>
<StudentMarks>20</StudentMarks>
</Student>
<Student>
<StudentID>StudentID_0</StudentID>
<StudnetName>StudnetName_0</StudnetName>
<StudentMarks>10</StudentMarks>
</Student>
<Student>
<StudentID>StudentID_0</StudentID>
<StudnetName>StudnetName_0</StudnetName>
<StudentMarks>10</StudentMarks>
</Student>
<Student>
<StudentID>StudentID_0</StudentID>
<StudnetName>StudnetName_0</StudnetName>
<StudentMarks>20</StudentMarks>
</Student>
<Student>
<StudentID>StudentID_0</StudentID>
<StudnetName>StudnetName_0</StudnetName>
<StudentMarks>30</StudentMarks>
</Student>
</ns0:Students>
and here is the output, hope this is what you are looking for.
<ns0:Students xmlns:ns0="http://BTSTempProj.StudentDetailsOut">
<StudentMarks>10</StudentMarks>
<Student>
<StudentName>StudnetName_0</StudentName>
<StudentID>StudentID_0</StudentID>
<StudentName>StudnetName_0</StudentName>
<StudentID>StudentID_0</StudentID>
<StudentName>StudnetName_0</StudentName>
<StudentID>StudentID_0</StudentID>
</Student>
<StudentMarks>20</StudentMarks>
<Student>
<StudentName>StudnetName_0</StudentName>
<StudentID>StudentID_0</StudentID>
<StudentName>StudnetName_0</StudentName>
<StudentID>StudentID_0</StudentID>
</Student>
<StudentMarks>30</StudentMarks>
<Student>
<StudentName>StudnetName_0</StudentName>
<StudentID>StudentID_0</StudentID>
</Student>
</ns0:Students>
Please find the below xslt which you can use, it is basically based on the Muenchian grouping suggested by Ashwin
<?xml version="1.0" encoding="UTF-16"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var" exclude-result-prefixes="msxsl var s0" version="1.0" xmlns:ns0="http://BTSTempProj.StudentDetailsOut" xmlns:s0="http://BTSTempProj.StudentDetailsIn">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:template match="/">
<xsl:apply-templates select="/s0:Students" />
</xsl:template>
<xsl:key name="groups" match="Student" use="StudentMarks"/>
<xsl:template match="/s0:Students">
<ns0:Students>
<xsl:for-each select="Student[generate-id(.)=generate-id(key('groups',StudentMarks))]">
<xsl:sort select="StudentMarks" order="ascending"/>
<StudentMarks>
<xsl:value-of select="StudentMarks/text()"/>
</StudentMarks>
<Student>
<xsl:for-each select="key('groups',StudentMarks)">
<StudentName>
<xsl:value-of select="StudnetName/text()"/>
</StudentName>
<StudentID>
<xsl:value-of select="StudentID/text()"/>
</StudentID>
</xsl:for-each>
</Student>
</xsl:for-each>
</ns0:Students>
</xsl:template>
</xsl:stylesheet>
I believe your XSD has a node Student with three child element Student ID, Student name and Student Marks.
You can use looping functoid to do that.
Student------------------------------ looping Functoid---------------------Destination RootNode For student
Student name ------------------------Direct Link to destination node--------------->>>>>>>
Student ID------------------------Direct Link to destination node--------------->>>>>>>
Student Marks------------------------Direct
Link to destination node--------------->>>>>>>
for grouping based on a condition used a equal to functoid source as marks and student destination node equivalent as unbounded node in destination side, you can check the condition for the marks in equal to functoid and it will only map those records which meet the condition.
- Edited by Middleware Man Wednesday, February 18, 2015 3:07 PM
Thank you Ashwin, Muenchian grouping worked..
Thank you everybody.