In XSLT 2.0 it looks something like this:
<xsl:for-each-group select="student/name/tokenize(., ';\s*')">
<xsl:sort select="current-grouping-key()"/>
<name count="{count(current-group())}">
<xsl:value-of select="current-grouping-key()"/>
</name>
</xsl:for-each-group>
Check the "word count" example in Chapter 1 of XSLT Programmer's Reference 3rd ed for a very similar example with more detail given.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference