Hi Michael,
I get an empty body. Not an error.
You use the following data:
<Doc title="Mr"/>
<Doc forename="John"/>
<Doc surname="Smith"/>
and the following key:
<xsl:key name="contacts-by-surname" match="Doc" use="surname" />
<xsl:key name="contacts-by-surname" match="Doc" use="@surname" />
-------------------------------------------------------------^
The selection in use selects an element "surname" which doesn't exist.
A few Doc element have an attribute surname. Assuming you don't want
the entries with empty surname?
<xsl:key name="contacts-by-surname" match="Doc[(_at_)surname!='']"
use="@surname" />
Cheers,
Juergen