Many XSLT processors support this kind of functionality, but the details depend on the processor.
If the external function returns a node-set, there will be no need to convert it to a node-set using exsl:node-set.
The more portable approach is to use the document() function (many processors allow you to write a URIResolver or XmlResolver that intercepts the request and returns say a DOM Document node as the result), or to pass the document in as a stylesheet parameter.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference