> * means 'all children' and hence name(*) will return the name of the first child element.
That's true in 1.0. In 2.0, name(*) will give an error if there is more than one child. If you want the name of the first child, you should say so: name(*).
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference