您可以使用JQuery通过XSLT将XML转换为XML吗

Can you use JQuery to transform XML to XML via XSLT

本文关键字:XML 转换 XSLT 可以使 JQuery 通过      更新时间:2023-09-26

我有一个网站,它有指向文档的链接,这些文档是根据文档类型动态填充的,所有数据都位于一个中心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
        });
    }
});

另一个是jquery.xslTransformhttp://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');

链接页面上有一个使用示例,我猜它可以满足您的需求,尽管它是sarissa的javascript包装器,它试图为所有浏览器中的XSL工具制作一个独立于浏览器的API。

您可以在Javascript中进行XSLT转换,jQuery甚至不参与这个过程,但我非常怀疑您是否能够将任何参数传递给处理器。

w3schools上有一个关于使用javascript进行XSLT处理的教程。

一个更可移植的实现是ajaxslt(http://goog-ajaxslt.sourceforge.net/(,它是有限的,但在许多情况下都能很好地工作。不久前,我在一个项目中使用了它,它甚至在explorer6中也有效。