After the SVG1.2/DOM Level 3 upgrade Batik now uses getDocumentURI() to fetch the base URI of a document. Older applications linked against Batik 1.6 can't call setDocumentURI(). Therefore, determining the base URI (for resolving relative URIs) is not always possible. I'll attach my proposed fix to reestablish backwards compatibility. The problem can be reproduced by converting examples/fo/svg/external.fo with FOP Trunk linked against Batik Trunk. FOP Trunk linked against Batik 1.6 works fine. When the problem is present 4 SVG images externally referenced inside an fo:instream-foreign-object (SVG namespace) will not display or show the broken reference image.
Created attachment 16268 [details] Patch to fix the problem
I made a change to SVGOMDocument so that there is only one idea of a document's URI, irrespective of whether it was set by setDocumentURI or setURLObject. Give it a try and let me know if it still doesn't work with FOP.
Your change works fine, too. Thanks!