Можете ли вы использовать JQuery для преобразования XML в XML через XSLT? - PullRequest
7 голосов
/ 05 июля 2011

У меня есть веб-сайт, на котором есть ссылки на документы, которые динамически заполняются в зависимости от типа документа, и все данные находятся в одном центральном XML-файле.Я хотел, чтобы JQuery передавал параметр в таблицу стилей, таблица стилей разделяла узлы с помощью xpath на основе переданного параметра, а затем сортировала заметки на основе атрибута.Из всей документации, которую я нашел, JQuery изначально не поддерживает XSLT, и ни один из сторонних плагинов не может вернуть новый объект XML после преобразования исходного XML.Я что-то упускаю или то, что я пытаюсь сделать, невозможно?Файл xsl был протестирован вне javascript и работает без нареканий.

Вот пример кода без преобразования

$.ajax({
            type: "GET",
    url: "xml/charts.xml",
    dataType: "xml",
    success: function(xml) {        

        $(xml).find('chart').each(function(){
            // Create link here
        });

    }
});

Ответы [ 3 ]

3 голосов
/ 26 июля 2011

Другим примером является jquery.xslTransform на http://jquery.glyphix.com/jquery.xslTransform/example/index.html

// now load both files into variables for the next 2 transformations
var xsldoc = $.xsl.load('test.xsl');
var xmldoc = $.xsl.load('test.xml');

// with an xpath
$('#with').getTransform(
    xsldoc,
    xmldoc,
    {
        xpath: '/test/inside'
    }
);

Или, как гласит общая документация:

$.getTransform(
'path-to-xsl.xsl',              // path or xsl document in javascript variable
'path-to-xml.xml',              // path or xml document in javascript variable
{
  params: {                     // object for your own xsl parameters
    paramName1: 'paramValue1',
    paramName2: 'paramValue2'
  },
  xpath: '/test/inside',        // trims your xml file to that defined by this xpath
  eval: true,                   // evaluates any <script> blocks it finds in the transformed result
  callback: function(){}        // getTransform evaluates this function when transformation is complete
});

// loads an xml file, parses it and stores it in xmlDoc
var xmlDoc = xslTransform.load('path-to-xml.xml');

На связанной странице есть пример использования, думаю, он можетудовлетворить ваши потребности, хотя это javascript-оболочка sarissa, которая пытается создать независимый от браузера API для инструментов XSL во всех браузерах.

1 голос
/ 21 июля 2011

Более переносимая реализация - ajaxslt (http://goog -ajaxslt.sourceforge.net / ), она ограничена, но во многих ситуациях работает нормально.Я использовал его некоторое время назад для проекта, и он работал даже в проводнике 6.

1 голос
/ 05 июля 2011

Вы можете выполнять преобразования XSLT в Javascript, jQuery даже не участвует в этом процессе, однако я серьезно сомневаюсь, что вы сможете передавать любые параметры процессору.

В w3schools есть учебник по обработке XSLT с использованием javascript.

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