如何将xsl文件转换为sef文件

Jar*_*rek 4 node.js saxon-js

我有xsl一个文件想要应用于node.js. 我发现saxon-js它似乎提供了我需要的东西。虽然我对文档有点迷失,但似乎我应该先将xsl文件转换为.sef文件,然后再在节点中运行转换。

saxon-js自述文件提到了其他包,xslt3应该能够做到这一点(请参阅自述文件):

编译样式表

要将 books.xsl 中保存的样式表编译为 books.sef.json 中的 SEF 文件,以便在浏览器或 Node.js 中运行,请使用命令行:

xslt3 -xsl:books.xsl -export:books.sef.json -t -ns:##html5

但是,安装xslt3包后,没有可执行文件可用于运行转换。

我错过了什么吗?我怎样才能转换xslsef.json(一次就可以,不需要从服务器动态运行它或其他什么)?

Jan*_*ara 8

FWIW,以下是您如何以编程方式执行此操作,无需xslt3(以防其他人登陆此处,寻找基于代码的解决方案):

// xsl: path to XSLT file
// xml: path to XML file to be transformed

const saxon = require("saxon-js");
const env = saxon.getPlatform();

const doc = env.parseXmlFromString(env.readFile(xsl));
// hack: avoid error "Required cardinality of value of parameter $static-base-uri is exactly one; supplied value is empty"
doc._saxonBaseUri = "file:///";

const sef = saxon.compile(doc);

/* now you can use `sef`:
const resultStringXML = saxon.transform({
  stylesheetInternal: sef,
  sourceText: env.readFile(xml)
});
*/
Run Code Online (Sandbox Code Playgroud)

这有点像猴子补丁(尤其是这_saxonBaseUri部分);无论如何,将其添加到此处,因为我(还)无法在任何文档中找到更好/正式的方法 - Saxonica 或其他文档。

  • 如果可以的话,我会给你一百万票。这是我在任何地方都能找到的第一个也是唯一一个在 Nodejs 中进行转换的有效示例。即使 saxon-js 自己的文档也不包含所需的信息。 (3认同)