首页 > 解决方案 > 使用 Node.js 中的 XSLT 字符串将 XML 字符串 [不是文件!] 转换为 HTML

问题描述

我有两个字符串。

第一个是 xml 字符串,保存为字符串,而不是来自文件。第二个是我从 XSLT 文件加载的字符串fs.readFile(...)

由于MSBuildTools等的一些错误,我已经尝试使用libxslt但无法安装它。npm

有什么替代品libxslt吗?我也遇到xslt-processor过,但它只接受文件作为参数。

编辑1:

为了向您提供概述,可以在此处下载 XSLT 文件和示例 XML 文件(均在应用程序中作为字符串处理):

标签: node.jsxmlxsltelectron

解决方案


我以某种方式为我的问题找到了解决方法:

  1. 我现在使用该xth库(通过 npm 安装npm i xth:)
  2. 将其导入我的函数:var xth = require('xth');
  3. 将 xml 字符串放入数据 URI:var xml = 'data:text/xml,' + encodeURIComponent(xmlString);
  4. XSLT 文件现在不是字符串,而是文件:var xsl = './../components/ELGA_Stylesheet_v1-0.xsl';
  5. 然后,我只是在xth - npm的示例中调用方法 xth

    1 xth(xml, xsl, function (html) { 2 html = html.replace(/&lt;/g, "<"); 3 html = html.replace(/&gt;/g, ">"); 4 html = html.replace(/&amp;/g, "&"); 5 openWindow(html); 6 });

  6. 该项目html是 xslt 转换后的字符串,我遇到了最后一个问题:在<script>输出字符串的标签中,符号 <、> 和 & 作为 <、> 和 & 这导致了问题。第 2 到 4 行是解决此问题的方法

openWindow(html)是我自己在新的电子窗口中打开结果字符串的方法。

注意:仍然存在一个问题:如此处所述,通过 #in 导航不起作用<a href=#id>,因为 Chromium 不允许导航到顶部帧到数据 uri。


推荐阅读