<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:key name="contacts-by-surname" match="contact" use="surname"/>
	<xsl:template match="records">
		<ul>
			<xsl:for-each select="contact[count(. | key('contacts-by-surname', surname)[1]) = 1]">
				<xsl:sort select="surname"/>
				<li><xsl:value-of select="surname"/>
					<ul>
						<xsl:for-each select="key('contacts-by-surname', surname)">
							<xsl:sort select="forename"/>
							<li><xsl:value-of select="forename"/></li>
						</xsl:for-each>
					</ul>
				</li>
			</xsl:for-each>
		</ul>
	</xsl:template>
</xsl:stylesheet>