Saxon-JS in the browser should support data: and blob: URLs
Browsers support URLs with the scheme
blob:, Saxon-JS in the browser should not reject such URLs but support loading resources from them as the browser APIs support that. Also,
data: URLs are already supported in Saxon Java.
Use cases are e.g.
xsl:include from a blob or data URL, for instance, if the user entered some XSLT module you want to
xsl:import that would be possible with data or blob URL support. Interestingly enough, this does work with the browser's native XSLT 1.0 processor, at least as far as I have tested with Chrome and Firefox.
Test case that shows that currently it doesn't work with Saxon-JS 2.3 is at https://martin-honnen.github.io/xslt/2021/blobTest1WithSaxonJS.html (need to open F12/developer tools to see the error message about e.g. "resolve-uri: invalid URI (base=NoStylesheetBaseURI, relative=blob:https://martin-honnen.github.io/c90a3603-af63-424d-a6ec-059293e007e2)").
Client-side test case using
xsl:import with a blob URL is at https://martin-honnen.github.io/xslt/2021/blobTest6.html (relevant output is also only visible if the the developer console is opened up).
Updated by Norm Tovey-Walsh almost 2 years ago
This turned out to be a completely different problem than I initially imagined. The browser is perfectly happy to resolve
blob: URIs, which I guess I should have realized. What's going on in SaxonJS is that we fail to recognize them as absolute URIs, attempt to resolve them against a base URI, and wind up with something unusable.
Simply observing that
blob: URIs are absolute seems to resolve the problem.
Please register to edit this issue