我需要帮助找到以下问题的解决方法,并希望在发生错误时将其解决:
我目前正在使用json-doc($url)
访问网络API并直接在xslt样式表上使用它。
e.g。 json-doc('https://localhost:8443/api/endpoint')
一切都很好,没问题。
当我使用它时,将xslt导入另一个样式表,那就是事情发生时。
<xsl:import href="classpath:childthatbreaks.xslt" />
net.sf.saxon.trans.XPathException: Unable to load the resource
[classpath:https://localhost:8443/api/endpoint] using the thread context class loader or the current class's class loader
at net.sf.saxon.lib.StandardUnparsedTextResolver.resolve(StandardUnparsedTextResolver.java:184) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.functions.UnparsedTextFunction.readFile(UnparsedTextFunction.java:76) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.functions.UnparsedText.evalUnparsedText(UnparsedText.java:89) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.functions.UnparsedText.call(UnparsedText.java:43) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.functions.UnparsedText.call(UnparsedText.java:29) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.FunctionCall.iterate(FunctionCall.java:547) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.CardinalityChecker.evaluateItem(CardinalityChecker.java:280) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.parser.Evaluator$3.evaluate(Evaluator.java:73) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.parser.Evaluator$3.evaluate(Evaluator.java:70) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.SystemFunctionCall.evaluateArguments(SystemFunctionCall.java:434) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.FunctionCall.iterate(FunctionCall.java:545) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.instruct.CopyOf.processLeavingTail(CopyOf.java:557) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.instruct.Choose.processLeavingTail(Choose.java:880) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:699) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:687) ~[Saxon-HE-9.8.0-5.jar:na]
at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:262) ~[Saxon-HE-9.8.0-5.jar:na]
似乎xslt解析器试图通过预先classpath:
根据规范,
如果URI是相对URI引用,则相对于静态上下文中的&gt;静态基URI属性进行解析。
这显然不是我遇到的行为。
将函数调用放在最顶层的样式表中不是一个选项,因为我们计划将其用作标准实用程序样式表/库。
我目前正在使用Saxon-HE 9.8.0-5
答案 0 :(得分:0)
显示的堆栈跟踪来自unparsed-text()
函数的调用:因为json-doc()
是作为合成unparsed-text() => parse-json()
实现的。
我认为你是对的。 Saxon特例类路径:URI,因为它们是非标准的,并且java.net.URI类没有正确处理,如果基URI以“classpath:”开头,那么它将“classpath:”添加到提供的URI而不用首先检查提供的URI是否相对。
您可以在
跟踪此问题