XSLT 2.0 has stronger typechecking. If you want to compare an integer to a string, you either have to convert the string to an integer or vice versa. In this case, write "position() = 35".
The reason for the change is to prevent some of the inconistencies taht arise in the 1.0 spec, for example in 1.0 if position() is 4, then
position() >= '004' returns true, but
position() = '004' returns false.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference