Bug #3007
closedsourceNode or sourceText property of options argument of transform method not used
100%
Description
http://home.arcor.de/martin.honnen/xslt/properties4.html tries to pass the document to be transformed as the sourceText
property of the options argument to the transform method and home.arcor.de/martin.honnen/xslt/properties3.html tries to use the sourceNode
property documented in http://www.saxonica.com/saxon-js/documentation/index.html#!api/transform but both pages fail with "Uncaught No source document, initial template, or initial mode supplied" as it seems neither sourceNode
nor sourceText
is supported inside of the browser, the code in transform
has
function transform(options, callback) {
if (typeof platform.initialize === "function") {
platform.initialize(options);
}
//print("Transforming...");
// Options is an object (map) that can include:
//
// stylesheetNode - the stylesheet as a document node
// stylesheetText - the stylesheet as lexical XML
// stylesheetLocation - the URI of the stylesheet
// stylesheetFileName - the file name of the stylesheet
// stylesheetParams - object containing values of global stylesheet parameters
// sourceNode - the source document as a document node
// sourceText - the source document as lexical XML
// sourceLocation - the URI of the source document
// sourceFileName - the file name of the source document
// initialTemplate - the initial template name as an EQName
// initialMode - the initial mode name as an EQName
// detination - determines what happens to the principal result tree from the transformation
// possible values: "replaceBody" | "appendToBody" | "prependToBody" | "application"
if (!options.stylesheetParams) {
options.stylesheetParams = {};
}
var stylesheet, sourceDoc;
if (inBrowser) {
if (options.stylesheetLocation === undefined) {
throw "No stylesheet supplied";
}
platform.asyncGetMultipleXml([options.stylesheetLocation, options.sourceLocation], function (docs) {
stylesheet = docs[options.stylesheetLocation] /*|| options.stylesheetNode*/;
sourceDoc = docs[options.sourceLocation] /*|| options.sourceNode*/;
applyStylesheet(stylesheet, sourceDoc, options);
if (callback) {
callback(options.principalResult);
}
})
} else {
stylesheet = options.stylesheetNode;
if (!stylesheet) {
var stylesheetText = options.stylesheetText;
if (!stylesheetText) {
var stylesheetFileName = options.stylesheetFileName;
if (!stylesheetFileName) {
throw "No stylesheet supplied";
}
stylesheetText = platform.readFile(stylesheetFileName);
}
stylesheet = platform.parseXmlFromString(stylesheetText);
}
sourceDoc = options.sourceNode;
if (!sourceDoc) {
var sourceText = options.sourceText;
if (!sourceText) {
var sourceFileName = options.sourceFileName;
if (sourceFileName) {
sourceText = platform.readFile(sourceFileName);
}
}
if (sourceText) {
sourceDoc = platform.parseXmlFromString(sourceText);
}
}
applyStylesheet(stylesheet, sourceDoc, options);
}
}
so sourceDoc = docs[options.sourceLocation] /*|| options.sourceNode*/
comments out the use of sourceCode
in the inbrowser
branch and sourceText
only seems to be supported outside of inbrowser@. As @sourceCode
is documented for Saxon-JS, I guess it should work.
Please register to edit this issue
Also available in: Atom PDF Tracking page