Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Node.js中的XSLT字符串将XML字符串[非文件!]转换为HTML_Node.js_Xml_Xslt_Electron - Fatal编程技术网

使用Node.js中的XSLT字符串将XML字符串[非文件!]转换为HTML

使用Node.js中的XSLT字符串将XML字符串[非文件!]转换为HTML,node.js,xml,xslt,electron,Node.js,Xml,Xslt,Electron,我有两条线 第一个是xml字符串,保存为字符串,而不是来自文件。 第二个是我从XSLT文件中加载的字符串,其中包含fs.readFile(…) 我已经尝试使用libxslt,但由于MSBuildTools等方面的一些错误,无法通过npm安装它 对于libxslt,是否有其他选择?我也遇到过xslt处理器,但它只接受文件作为参数 编辑1: 为了向您提供概述,可以在此处下载XSLT文件和示例XML文件(在应用程序中均作为字符串处理): 我不知怎么找到了解决问题的方法: 我现在使用xth库(通过

我有两条线

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

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

对于
libxslt
,是否有其他选择?我也遇到过
xslt处理器
,但它只接受文件作为参数

编辑1:

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


    • 我不知怎么找到了解决问题的方法:

    • 我现在使用
      xth
      库(通过npm安装:
      npm I xth
    • 将其导入我的函数:
      var xth=require('xth')
    • 将xml字符串放入数据URI中:
      var xml='data:text/xml',+encodeURIComponent(xmlString)
    • XSLT文件现在不是字符串,而是文件:
      var xsl='./../components/ELGA_样式表_v1-0.xsl'
    • 然后,我只调用方法xth,如

      1xth(xml、xsl、函数(html){
      2 html=html.replace(//g,“”);
      4 html=html。替换(/&;/g,“&”);
      5开放窗口(html);
      6 });

    • 项目
      html
      是xslt转换的字符串,我有最后一个问题:在输出字符串的
      标记中,符号和&作为&lt>,及;这导致了问题。第2行到第4行是此问题的解决方法

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


      注意:还有一个问题:如前所述,通过
      中的#导航不起作用,因为Chromium不允许导航到数据uri的顶部框架。

      我不知何故找到了解决问题的方法:

    • 我现在使用
      xth
      库(通过npm安装:
      npm I xth
    • 将其导入我的函数:
      var xth=require('xth')
    • 将xml字符串放入数据URI中:
      var xml='data:text/xml',+encodeURIComponent(xmlString)
    • XSLT文件现在不是字符串,而是文件:
      var xsl='./../components/ELGA_样式表_v1-0.xsl'
    • 然后,我只调用方法xth,如

      1xth(xml、xsl、函数(html){
      2 html=html.replace(//g,“”);
      4 html=html。替换(/&;/g,“&”);
      5开放窗口(html);
      6 });

    • 项目
      html
      是xslt转换的字符串,我有最后一个问题:在输出字符串的
      标记中,符号和&作为&lt>,及;这导致了问题。第2行到第4行是此问题的解决方法

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

      注意:还有一个问题:如前所述,通过
      中的#导航不起作用,因为Chromium不允许导航到数据uri的顶部框架。

      免责声明:未测试附加的XML/XSLT

      您可以使用:

      这种方法可能并不完美(尤其是
      \u saxonBaseUri
      hack),但我找不到更好的(用于
      saxon js
      )在线文档(除了
      xslt3
      基于命令行的方法)。

      免责声明:未针对附加的XML/XSLT进行测试

      您可以使用:


      这种方法可能并不完美(尤其是
      \u saxonBaseUri
      hack),但我在网上找不到更好的(用于
      saxon js
      )文档(除了
      xslt3
      基于命令行的方法)。

      您尝试过吗?它适用于输入字符串。免责声明:我没有使用它。现在试用,出现以下错误:
      Uncaught(in promise)错误:无法加载XSLT文档
      -可能XSL太大了……您试过了吗?它适用于输入字符串。免责声明:我没有使用它。现在试用,出现以下错误:
      Uncaught(in promise)错误:无法加载XSLT文档
      -可能XSL太大了。。。。
      const saxon = require("saxon-js");
      const env = saxon.getPlatform();
      
      const doc = env.parseXmlFromString(yourStringXSLT);
      // monkey-patch to avoid a "Required cardinality of value of parameter $static-base-uri is exactly one; supplied value is empty" compile error
      doc._saxonBaseUri = "file:///";
      
      const sef = saxon.compile(doc);
      // you can save and reuse the SEF for future transforms, if applicable
      
      const resultStringXML = saxon.transform({
        stylesheetInternal: sef,
        sourceText: yourStringXML
      });