2010-11-04 2 views
2

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

+1

ли XML сам документ, отображаемый в обозревателе окно? Или он уже преобразован таблицей стилей XSLT? Как/где таблица стилей «задана»? API-интерфейс Mozilla XSLT описан здесь: https://developer.mozilla.org/en/using_the_mozilla_javascript_interface_to_xsl_transformations –

+0

Я уточнил вопрос. –

ответ

1

Вот пример:

Букмарклет для нанесения таблицы стилей XSLT к документу XML - просто вставить в формате base64 XSL в atob ("") - проверено на светлячок

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

0

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

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

Во-первых, включающие в себя и XSLT XML таким образом, чтобы избежать каких-либо проблем доступа к файлам с помощью JavaScript.

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

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

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

    в

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

Благодаря