Index: genshi/template/tests/loader.py
===================================================================
--- genshi/template/tests/loader.py	(revision 812)
+++ genshi/template/tests/loader.py	(working copy)
@@ -290,7 +290,7 @@
         file2 = open(os.path.join(dir2, 'tmpl1.html'), 'w')
         try:
             file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
-              <xi:include href="foo.html" /> from sub1
+              <xi:include href="../foo.html" /> from sub1
             </html>""")
         finally:
             file2.close()
@@ -300,7 +300,7 @@
         file3 = open(os.path.join(dir3, 'tmpl2.html'), 'w')
         try:
             file3.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
-              <xi:include href="foo.html" /> from sub2
+              <xi:include href="../foo.html" /> from sub2
             </html>""")
         finally:
             file3.close()
Index: genshi/template/loader.py
===================================================================
--- genshi/template/loader.py	(revision 812)
+++ genshi/template/loader.py	(working copy)
@@ -296,13 +296,13 @@
         request to the delegate.
         
         >>> load = prefixed(
-        ...     app1 = lambda filename: ('app1', filename),
-        ...     app2 = lambda filename: ('app2', filename)
+        ...     app1 = lambda filename: ('app1', filename, None, None),
+        ...     app2 = lambda filename: ('app2', filename, None, None)
         ... )
         >>> print load('app1/foo.html')
-        ('app1', 'foo.html')
+        ('app1', 'app1/foo.html', None, None)
         >>> print load('app2/bar.html')
-        ('app2', 'bar.html')
+        ('app2', 'app2/bar.html', None, None)
 
         :param delegates: mapping of path prefixes to loader functions
         :return: the loader function
@@ -313,7 +313,9 @@
                 if filename.startswith(prefix):
                     if isinstance(delegate, basestring):
                         delegate = TemplateLoader.directory(delegate)
-                    return delegate(filename[len(prefix):].lstrip('/\\'))
+                    path, _, fileobj, mtime = delegate(
+                        filename[len(prefix):].lstrip('/\\'))
+                    return path, filename, fileobj, mtime
             raise TemplateNotFound(filename, delegates.keys())
         return _dispatch_by_prefix
     prefixed = staticmethod(prefixed)
