When the document() function sees a relative URI, it resolves it against some base URI. If the argument to the document() function is a node, as in your example, then it uses the base URI of that node. In practice (given a relative URI such as geneva.xml) this means it looks in the directory containing the XML document that contains the relative URI. If the argument to the document() function is a string, on the other hand, then it is resolved relative to the stylesheet.
In XSLT 1.0 there are two ways you can change this behaviour. You can specify a base URI in the second argument of the document() function (see the spec for details) or you can modify the relative URI by string manipulation, for example concat("../subdir/", @filename).
In 2.0 there are many more choices, because you have access to functions such as base-uri() and resolve-uri() than give you a lot more control.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference