我试图运行一个空的简单代码片段,在Windows10上测试NodeJSv8.11.1上的SaxonJS 1.1.0。
require('./Saxon-JS-1.1.0/SaxonJS.js');但我发现了一个错误:
PS C:\XXX\sandbox\xsl-transformation> node main.js
C:\XXX\xsl-transformation\Saxon-JS-1.1.0\SaxonJS.js:17136
setPlatform(JSTestDriver.platform);
^
ReferenceError: JSTestDriver is not defined
at initialize (C:\XXX\sandbox\xsl-transformation\Saxon-JS-1.1.0\SaxonJS.js:17136:25)查看源代码,我可以看到:
function initialize() {
"use strict";
if (inBrowser) {
setPlatform(BrowserPlatform.platform);
saxonPrint("Saxon-JS " + getProcessorInfo().productVersion + " in browser", 0);
} else {
// Currently only Nashorn. (Later need to distinguish from Node case)
// Nashorn JSTestDriver
setPlatform(JSTestDriver.platform);
saxonPrint("Saxon-JS " + getProcessorInfo().productVersion + " in
Nashorn");
// node NodePlatform
}
if (typeof platform.initialize === "function") {
platform.initialize();
}
}似乎Node平台还没有实现。
但是,在文档中,它是这样写的:
我们主要讨论的是在浏览器中运行Saxon。然而,它也能够在服务器端的JavaScript环境中运行,比如Node.js (在这个版本中还没有完全支持)。
我深入搜索SaxonJS/NodeJS的代码片段,但没有找到。有人有SaxonJS在NodeJS上工作的代码片段吗?
发布于 2018-06-27 11:06:21
恐怕文件有点太仓促了。我们确实有一些用户报告说,这些代码可以在Node.js下运行,而且我们自己已经“在实验室”这样做了,但是它需要对发布的产品进行源代码调整。发布后,代码运行在两个平台上,即浏览器平台和Nashorn (在Nashorn下,它假设我们的测试工具没有发布)。
我们正在为Node.js开发一个版本。作为一个产品,正确地这样做需要很多浏览器版本中没有的功能,例如XML解析和序列化、调试支持、命令行接口和API等等。
发布于 2022-10-27 00:53:07
Node.js撒克逊Js指令
这个S/O问题是谷歌在"node.js撒克逊-js“中列出的第一个问题。所以,由于能见度问题,我要晚回答这个问题。
npm install saxon-jsconst saxonJs = require('saxon-js');
const fs = require('fs');
function transformDocument(source, destination, transformation, parameters) {
var xml = fs.readFileSync(source).toString()
var stylesheetParams = Object.getOwnPropertyNames(parameters)
.map(o => `QName('', '${o}') : '${parameters[o]}'`).join(",")
const html = saxonJs.XPath.evaluate(
`transform(
map {
'source-node' : parse-xml($xml),
'stylesheet-location' : $xslt,
'stylesheet-params': map {${stylesheetParams}},
'delivery-format' : 'serialized'
}
)?output`,
null,
{
params : {
'xml' : xml,
'xslt' : 'file:' + transformation
}
}
);
fs.writeFileSync(destination, html)
}参数
特征性
(-)极慢(+)都不需要在命令行上运行(+)在过去22年中基于xslt使用情况的易于使用的函数签名(+)不会崩溃备注
'source-location'使用file: url,但是没有beanxpath transform()函数非常慢。https://stackoverflow.com/questions/50984147
复制相似问题