Actions
Bug #6116
closedUncheckedXPathException and missing error codes in output with Saxon-HE 12J
Start date:
2023-07-06
Due date:
% Done:
100%
Estimated time:
Legacy ID:
Applies to branch:
12, trunk
Fix Committed on Branch:
12, trunk
Fixed in Maintenance Release:
Platforms:
.NET, Java
Description
These issues are like https://saxonica.plan.io/issues/6081 but are not addressed by Saxon 12.3. (Maybe you were right when you mentioned "other paths where the same thing needs to be done...")
Prerequisites for Reproduction Steps¶
Download and unzip XSpec from the master branch https://github.com/xspec/xspec/archive/refs/heads/master.zip
Case 1: UncheckedXPathException and no user-defined error code¶
Place the attached file no-by-default-compiled.xq
directly in the xspec-master
folder.
In a command shell, navigate to the xspec-master
folder and run the query with Saxon-HE 12.3 and Saxon-HE 11.5.
Saxon 11.5 results¶
java -cp "C:\Program Files\Saxonica\SaxonHE11.5J\saxon-he-11.5.jar" net.sf.saxon.Query -q:no-by-default-compiled.xq
Error on line 45 column 8 of no-by-default-compiled.xq:
my-error-code Error signalled by application call on error()
invoked by function call at file:/C:/.../xspec-master/no-by-default-compiled.xq#90
<?xml version="1.0" encoding="UTF-8"?>
<report xmlns="http://www.jenitennison.com/xslt/xspec"
xspec="test/catch/no-by-default.xspec"
query="x-urn:test:do-nothing"
query-at="test/do-nothing.xqm"
date="2023-07-05T19:14:03.5260578-04:00">
<scenario id="scenario1" xspec="test/catch/no-by-default.xspec">
<label>By default</label>
<input-wrap xmlns="">
<x:call xmlns:x="http://www.jenitennison.com/xslt/xspec"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
function="error">
<x:param select="xs:QName('my-error-code')"/>
</x:call>
</input-wrap>
Query failed with dynamic error: Error signalled by application call on error()
Saxon 12.3 results¶
java -cp "C:\Program Files\Saxonica\SaxonHE12.3J\saxon-he-12.3.jar" net.sf.saxon.Query -q:no-by-default-compiled.xq
<?xml version="1.0" encoding="UTF-8"?>
net.sf.saxon.trans.UncheckedXPathException: Error signalled by application call on error()
at net.sf.saxon.value.SingletonClosure.materialize(SingletonClosure.java:164)
at net.sf.saxon.expr.elab.LocalVariableEvaluator.evaluate(LocalVariableEvaluator.java:31)
at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61)
at net.sf.saxon.expr.UserFunctionCall.evaluateArguments(UserFunctionCall.java:616)
at net.sf.saxon.expr.UserFunctionCall$UserFunctionCallElaborator.lambda$elaborateForPush$5(UserFunctionCall.java:844)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:851)
at net.sf.saxon.expr.LetExpression$LetExprElaborator.lambda$elaborateForPush$6(LetExpression.java:942)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895)
at net.sf.saxon.expr.instruct.ComputedElement$ComputedElementElaborator.lambda$elaborateForPush$1(ComputedElement.java:655)
at net.sf.saxon.expr.ItemChecker$ItemCheckerElaborator.lambda$elaborateForPush$2(ItemChecker.java:481)
at net.sf.saxon.expr.instruct.UserFunction.process(UserFunction.java:730)
at net.sf.saxon.expr.UserFunctionCall$UserFunctionCallElaborator.lambda$elaborateForPush$5(UserFunctionCall.java:846)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895)
at net.sf.saxon.expr.instruct.ComputedElement$ComputedElementElaborator.lambda$elaborateForPush$1(ComputedElement.java:655)
at net.sf.saxon.expr.instruct.DocumentInstr$DocumentInstrElaborator.lambda$elaborateForItem$3(DocumentInstr.java:392)
at net.sf.saxon.expr.instruct.DocumentInstr$DocumentInstrElaborator.lambda$elaborateForPush$0(DocumentInstr.java:332)
at net.sf.saxon.query.XQueryExpression.processQuery(XQueryExpression.java:499)
at net.sf.saxon.query.XQueryExpression.run(XQueryExpression.java:473)
at net.sf.saxon.s9api.XQueryEvaluator.run(XQueryEvaluator.java:464)
at net.sf.saxon.Query.runQuery(Query.java:1001)
at net.sf.saxon.Query.doQuery(Query.java:457)
at net.sf.saxon.Query.doQuery(Query.java:516)
at net.sf.saxon.Query.main(Query.java:107)
Caused by: net.sf.saxon.functions.Error$UserDefinedXPathException: Error signalled by application call on error()
at net.sf.saxon.functions.Error.error(Error.java:67)
at net.sf.saxon.functions.Error.call(Error.java:121)
at net.sf.saxon.expr.SystemFunctionCall$SystemFunctionCallElaborator.lambda$elaborateForPull$1(SystemFunctionCall.java:605)
at net.sf.saxon.value.SingletonClosure.asItem(SingletonClosure.java:111)
at net.sf.saxon.value.SingletonClosure.materialize(SingletonClosure.java:162)
... 22 more
Fatal error during query: net.sf.saxon.trans.UncheckedXPathException: Error signalled by application call on error()
Case 2: UncheckedXPathException and no standard error code XPDY0002¶
Place the attached file test-issue-423-compiled.xq
directly in the xspec-master
folder.
In a command shell, navigate to the xspec-master
folder and run the query with Saxon-HE 12.3 and Saxon-HE 11.5.
Saxon 11.5 results¶
java -cp "C:\Program Files\Saxonica\SaxonHE11.5J\saxon-he-11.5.jar" net.sf.saxon.Query -q:test-issue-423-compiled.xq
Warning on line 41 column 2 of test-issue-423-compiled.xq:
Evaluation will always throw a dynamic error: Axis step child::element() cannot be used
here: the context item is absent
Error on line 41 column 2 of test-issue-423-compiled.xq:
XPDY0002 Axis step child::element() cannot be used here: the context item is absent
invoked by function call at file:/C:/.../xspec-master/test-issue-423-compiled.xq#88
<?xml version="1.0" encoding="UTF-8"?>
<report xmlns="http://www.jenitennison.com/xslt/xspec"
xspec="test/issue-423/test.xspec"
query="x-urn:test:do-nothing"
query-at="test/do-nothing.xqm"
date="2023-07-05T19:04:56.3826905-04:00">
<scenario id="scenario1" xspec="test/issue-423/test.xspec">
<label>Suppose you're testing count() function with child::element() selected but you
forget to provide the selection context (either inner XML or @href)</label>
<input-wrap xmlns="">
<x:call xmlns:x="http://www.jenitennison.com/xslt/xspec" function="count">
<x:param select="child::element()"/>
</x:call>
</input-wrap>
Query failed with dynamic error: Axis step child::element() cannot be used here: the context item is absent
Saxon 12.3 results¶
java -cp "C:\Program Files\Saxonica\SaxonHE12.3J\saxon-he-12.3.jar" net.sf.saxon.Query -q:test-issue-423-compiled.xq
Warning on line 41 column 2 of test-issue-423-compiled.xq:
SXWN9027 Evaluation will always throw a dynamic error: Axis step child::element() cannot
be used here: the context item is absent
<?xml version="1.0" encoding="UTF-8"?>
net.sf.saxon.trans.UncheckedXPathException: Axis step child::element() cannot be used here: the context item is absent
at net.sf.saxon.value.SingletonClosure.materialize(SingletonClosure.java:164)
at net.sf.saxon.expr.elab.LocalVariableEvaluator.evaluate(LocalVariableEvaluator.java:31)
at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61)
at net.sf.saxon.expr.UserFunctionCall.evaluateArguments(UserFunctionCall.java:616)
at net.sf.saxon.expr.UserFunctionCall$UserFunctionCallElaborator.lambda$elaborateForPush$5(UserFunctionCall.java:844)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:851)
at net.sf.saxon.expr.LetExpression$LetExprElaborator.lambda$elaborateForPush$6(LetExpression.java:942)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895)
at net.sf.saxon.expr.instruct.ComputedElement$ComputedElementElaborator.lambda$elaborateForPush$1(ComputedElement.java:655)
at net.sf.saxon.expr.ItemChecker$ItemCheckerElaborator.lambda$elaborateForPush$2(ItemChecker.java:481)
at net.sf.saxon.expr.instruct.UserFunction.process(UserFunction.java:730)
at net.sf.saxon.expr.UserFunctionCall$UserFunctionCallElaborator.lambda$elaborateForPush$5(UserFunctionCall.java:846)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895)
at net.sf.saxon.expr.instruct.ComputedElement$ComputedElementElaborator.lambda$elaborateForPush$1(ComputedElement.java:655)
at net.sf.saxon.expr.instruct.DocumentInstr$DocumentInstrElaborator.lambda$elaborateForItem$3(DocumentInstr.java:392)
at net.sf.saxon.expr.instruct.DocumentInstr$DocumentInstrElaborator.lambda$elaborateForPush$0(DocumentInstr.java:332)
at net.sf.saxon.query.XQueryExpression.processQuery(XQueryExpression.java:499)
at net.sf.saxon.query.XQueryExpression.run(XQueryExpression.java:473)
at net.sf.saxon.s9api.XQueryEvaluator.run(XQueryEvaluator.java:464)
at net.sf.saxon.Query.runQuery(Query.java:1001)
at net.sf.saxon.Query.doQuery(Query.java:457)
at net.sf.saxon.Query.doQuery(Query.java:516)
at net.sf.saxon.Query.main(Query.java:107)
Caused by: net.sf.saxon.trans.XPathException: Axis step child::element() cannot be used here: the context item is absent
at net.sf.saxon.expr.ErrorExpression$ErrorExpressionElaborator.lambda$elaborateForPull$0(ErrorExpression.java:252)
at net.sf.saxon.functions.Count$CountFnElaborator.lambda$elaborateForItem$0(Count.java:130)
at net.sf.saxon.expr.elab.ItemElaborator.lambda$elaborateForPull$0(ItemElaborator.java:36)
at net.sf.saxon.value.SingletonClosure.asItem(SingletonClosure.java:111)
at net.sf.saxon.value.SingletonClosure.materialize(SingletonClosure.java:162)
... 22 more
Fatal error during query: net.sf.saxon.trans.UncheckedXPathException: Axis step child::element() cannot be used here: the context item is absent
Files
Please register to edit this issue
Actions