Sorry you didn't understand my message. There is nothing wrong with the code. But the error message shows that the XSLT processor doesn't understand XSLT 2.0 code. It's like passing valid C code to a Java processor, you will get error messages: they don't mean there's anything wrong with the code, they mean you are processing it incorrectly.
Author, XSLT 2.0 and XPath 2.0 Programmer\'s Reference