Project

Profile

Help

Bug #3936

xsl:call-template not executed under Saxon-EE

Added by Michael Kay about 3 years ago. Updated about 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Build and release
Sprint/Milestone:
-
Start date:
2018-10-02
Due date:
% Done:

100%

Estimated time:
Legacy ID:
Applies to branch:
9.8, 9.9
Fix Committed on Branch:
9.8, 9.9
Fixed in Maintenance Release:
Platforms:

Description

The stylesheet appears to output a <head> element under Saxon-HE (or Saxon-EE with no license), and the element is missing under Saxon-EE.

Reported by email to mike@.

History

#1 Updated by Michael Kay about 3 years ago

  • Status changed from New to AwaitingInfo

I have not been able to reproduce this and have requested further information from the user.

#2 Updated by Michael Kay about 3 years ago

  • Status changed from AwaitingInfo to In Progress

Weirdly, the user's hypothesis turns out to be correct: it fails when running with their particular license file, but not with other license files.

Looking more carefully, the license file has an unusual combination of options:

SAT=yes SAQ=yes SAV=no

The -explain output shows that the body of the name="header" template is empty, accounting for the absence of any output when this template is called.

#3 Updated by Michael Kay about 3 years ago

It goes wrong at the point of bytecode generation.

As a consequence of SAT=yes, the option to generate bytecode is set on, but as a consequence of SAV=no, the method to generate bytecode returns null. As a consequence the body of the named template is null, and this results in a call on the template returning an empty sequence.

Two follow-up actions:

(a) issue the user a corrected license!

(b) put a check in the license-creation tool to prevent this happening again (it can happen when licenses are issued manually).

#4 Updated by Michael Kay about 3 years ago

  • Fix Committed on Branch 9.8, 9.9 added

In case anything like this should happen again, and just for the sake of code robustness, I have changed Optimizer.makeByteCodeCandidate() to return the supplied expression unchanged (rather than null) in the case where no bytecode generation is performed. Patch applies to Optimizer.makeByteCodeCandidate() in 9.8 and 9.9.

#5 Updated by Michael Kay about 3 years ago

  • Category changed from XSLT conformance to Build and release
  • Status changed from In Progress to Resolved

#6 Updated by O'Neil Delpratt about 3 years ago

  • % Done changed from 0 to 100
  • Fixed in Maintenance Release 9.8.0.15 added

Bug fix applied in the Saxon 9.8.0.15 maintenance release. Leave open to the Saxon 9.9 maintenance release.

#7 Updated by O'Neil Delpratt about 3 years ago

  • Status changed from Resolved to Closed
  • Fixed in Maintenance Release 9.9.0.2 added

Bug fix applied in the Saxon 9.9.0.2 maintenance release.

Please register to edit this issue

Also available in: Atom PDF