In XSLT 1.0, parameters declared using xsl:param are always optional. The default value is provided by the select attribute; if there is no select attribute, the default value is a zero-length string.
In XSLT 2.0, parameters are optional provided you don't set required="yes". The rules for the default value take into account whether or not you specified the parameter type in an "as" attribute.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference