букмарклет для применения таблицы стилей xslt к отображаемому xml-файлу

Как мне написать букмарклет, который применяет заданную таблицу стилей XSLT к файлу XML, который отображается, например, в Firefox? XML-документ уже загружен в браузер и отображается без таблицы стилей, а XSLT доступен по фиксированному URL-адресу, который должен быть закодирован в букмарклете.


person Hans-Peter Störr    schedule 04.11.2010    source источник
comment
Отображается ли сам XML-документ в окне браузера? Или он уже преобразован таблицей стилей XSLT? Как/где дается таблица стилей? API Mozilla XSLT задокументирован здесь: developer.mozilla.org/en/   -  person Martin Honnen    schedule 04.11.2010


Ответы (2)


Вот пример:

Букмарклет для применения таблицы стилей XSLT к XML-документу — просто вставьте xsl в кодировке base64 в atob («») — проверено на firefox

javascript: (function() {
  var parser = new DOMParser();
  var ss = parser.parseFromString(atob(""), 'application/xml');
  var xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(ss);
  var newdoc = xsltProcessor.transformToDocument(content.document);
  var myWindow = window.open("data:text/html," + encodeURIComponent(newdoc.documentElement.innerHTML), "_blank", "");
  myWindow.focus();
}());

ссылка: https://gist.github.com/gosub/c7576b0c99ffdd7e993c

person RH.    schedule 05.02.2017

Вы можете добавить скрипт для применения xslt к xml в закладке в скобках «javascript ()».

Вот ссылка: http://www.w3schools.com/xsl/tryit.asp?filename=cdcatalog

Во-первых, разместите xslt и xml, чтобы избежать проблем с доступом к файлам из javascript.

Есть некоторые изменения, которые необходимы в скрипте:

  1. В приведенной выше ссылке обновите следующее:

        xml=loadXMLDoc("cdcatalog.xml");
        xsl=loadXMLDoc("cdcatalog.xsl");
    

    to

        xml=loadXMLDoc(window.location.href.toString());
        xsl=loadXMLDoc("http://<path>/<filename>.xsl");
    
  2. Сохраните вывод в файле в соответствии с набором вывода в вашем xslt(xml/html/text) или просто отобразите его в предупреждении для копирования и использования.

Спасибо

person Pallavi    schedule 11.12.2013