declares xmlHashScanner as a pointer to a function returning void, whereas

void *xmlHashScanner(void *payload, void *data, xmlChar *name)

declares xmlHashScanner as a function returning a pointer to void.

In both declaration and expression syntax, the unary * operator has lower precedence than the postfix [] subscript and () function call operators, so

T *a[N]; // a is an N-element array of pointer to T
T (*a)[N]; // a is a pointer to an N-element array of T
T *f(); // f is a function returning a pointer to T
T (*f)(); // f is a pointer to a function returning T

Email codedump link for the difference between void (*xmlHashScanner) and void *xmlHashScanner