>Variable "RecommendedNodeSet" i want to access later in other rules
Of course if jasper:GetCategoryOpportunity() is a pure function then you can just move
<xsl:variable name="RecommendedNodeSet" select="jasper:GetCategoryOpportunity(3)" />
outside the template and it becomes a global variable automatically.
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference