Преобразуйте XML-строку [не файл!] С помощью строки XSLT в Node.js в HTML - PullRequest
0 голосов
/ 01 марта 2019

У меня есть две строки.

Первая - это строка XML, сохраненная как строка, а не из файла.Вторая - это строка, которую я загружаю из XSLT-файла с fs.readFile(...).

. Я уже пытался использовать libxslt, но не могу установить его с помощью npm из-за некоторых ошибок в MSBuildTools и так далее.

Есть ли альтернативы для libxslt?Я тоже уже сталкивался с xslt-processor, но он принимает только файлы в качестве параметров.

РЕДАКТИРОВАТЬ 1:

, чтобы предоставить вам обзор, файл XSLT и пример файла XML (оба обрабатываются какСтроки в приложении) можно скачать здесь:

1 Ответ

0 голосов
/ 01 марта 2019

Я каким-то образом нашел решение для моей проблемы:

  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, как в примере: xth - npm

    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> выходной строки символы <,> и & были там как & lt ;, & gt; и & amp;что вызвало проблемы.строки 2–4 - это обходной путь для этой проблемы

openWindow(html) - это мой собственный метод открытия строки результата в новом электронном окне.

ПРИМЕЧАНИЕ: одна проблемаостается: как упомянуто здесь , навигация через # в <a href=#id> не работает, потому что Chromium не разрешает навигацию к верхнему фрейму к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...