From 465c11e17519c3ce0439275f081802bc29fb6800 Mon Sep 17 00:00:00 2001 From: Norman Walsh Date: Sat, 26 Aug 2023 16:00:24 +0100 Subject: [PATCH] Attempt to workaround unparsed text problem --- .../com/xmlcalabash/util/XProcURIResolver.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xmlcalabash/util/XProcURIResolver.java b/src/main/java/com/xmlcalabash/util/XProcURIResolver.java index d011000d..f95f5fbc 100644 --- a/src/main/java/com/xmlcalabash/util/XProcURIResolver.java +++ b/src/main/java/com/xmlcalabash/util/XProcURIResolver.java @@ -435,7 +435,20 @@ public Source resolve(ResourceRequest request) throws XPathException { String href = request.relativeUri == null ? request.uri : request.relativeUri; String baseUri = request.baseUri == null ? request.uri : request.baseUri; try { - return catalogResolver.resolve(href, baseUri); + Source source = catalogResolver.resolve(href, baseUri); + // Hack. Starting at maybe 10.9, Saxon got cranky about what comes back from + // attempting to read an unparsed text resource. It has to be a stream source. + // This is an attempt to work around that problem + if (ResourceRequest.TEXT_NATURE.equals(request.nature) + || ResourceRequest.BINARY_NATURE.equals(request.nature)) { + try { + URL url = new URL(source.getSystemId()); + return new StreamSource(url.openStream(), source.getSystemId()); + } catch (IOException ex) { + // nevermind + } + } + return source; } catch (TransformerException | IllegalArgumentException e) { throw new XPathException("Exception from catalog resolver resolverURI()", e); }