Bug #2888


Static base-uri for in-browser exported stylesheets.

Added by John Lumley almost 8 years ago. Updated almost 7 years ago.

Start date:
Due date:
% Done:


Estimated time:
Applies to JS Branch:
Fix Committed on JS Branch:
Fixed in JS Release:
SEF Generated with:
Contact person:
Additional contact persons:


Currently the export format contains baseUri="path" attributes which are used to recover the static base URI at run time. These refer to the location of the defining stylesheet at compile time. In cases where the exported stylesheet is being run in browser under Saxon-JS, this is inappropriate, as usually the export is loaded via HTTP and far removed from its original location.

Under Saxon-JS Context.fixed now has three additional properties which are set during initialisation:

  • staticBaseURI - which is the absolute URI of the export file loaded via the stylesheetLocation option. This is now used to recover 'stylesheet-relative' resources e.g. @select="doc('myResources.xml')"@, assuming any HTTP server URL resolution is configured suitably.

  • htmlURI - the absolute URI of the html document that invoked Saxon-JS

  • javascriptURI - the absolute URI of the javascript (i.e. Saxon-JS). This is used to dynamically load additional resources, such as the regular expression categories.

In execution outside the browser, static base URI is still recovered from attributes in the export file.

Changes committed to the Saxon-JS code.

Actions #1

Updated by Michael Kay almost 8 years ago

  • Status changed from Resolved to In Progress

Leaving open because I think there are some wider issues.

I have changed the ExpressionPresenter to use a configuration option FeatureKeys.EXPORT_BASE_URI, if set false, the static base URI is not written to the export file. The option is set false automatically when target:JS is used.

I have also changed it to output the "module" attribute (used when reporting dynamic errors) in truncated form if EXPORT_BASE_URI is false. Only the last part of the path is output.

Actions #2

Updated by Michael Kay almost 8 years ago

  • Status changed from In Progress to Resolved

This appears to have been resolved (though no doubt there will be further problems in this area...)

Actions #3

Updated by Debbie Lockett almost 8 years ago

Further commits made to the Saxon-JS code, and 9.8 code.

From 9.8, it is possible to control whether an SEF is "relocatable". If an SEF is relocatable, this means it contains no local base URI information (in attributes such as @baseUri). This control is independent to setting the target edition (for instance to "JS"). The attribute @relocatable (with value "true"or "false") is added to the package element of an SEF to indicate this setting.

The configuration option FeatureKeys.EXPORT_BASE_URI has been removed, and replaced by the property "relocatable" (in CompilerInfo, ExpressionPresenter, and PackageData).

When running the XsltTestSuiteDriverJS (in Nashorn) this can be controlled using the option -relocatable:on|off.

When running outside the browser, if relocatable is true, then the stylesheetFileName is used for the Context.fixed.staticBaseUri.

Actions #4

Updated by Debbie Lockett over 7 years ago

  • Status changed from Resolved to Closed
  • % Done changed from 0 to 100
  • Found in version set to 0.9
  • Fixed in version set to 0.9.1

Bug fix applied in the Saxon-JS 0.9.1 beta release.

Actions #5

Updated by Community Admin almost 7 years ago

  • Fixed in JS Release set to Saxon-JS 0.9.1
  • Applies to JS Branch 0.9 added
  • Fix Committed on JS Branch 0.9 added
Actions #6

Updated by Debbie Lockett almost 7 years ago

  • Description updated (diff)
  • Applies to branch deleted (9.8)

Please register to edit this issue

Also available in: Atom PDF Tracking page