参数Client Side XSLT

时间:2017-03-13 21:15:35

标签: php xml xslt

这个服务器端版本相当于设置xslt param,但是客户端是什么?

$xslt = new XSLTProcessor();
$xslt->setParameter('', 'value', $_REQUEST['value']); // param 1
$xslt->setParameter('', 'column', $_REQUEST['column']); // param 2
$xslt->setParameter('', 'page', $_REQUEST['page']); // param 3
$xslDoc = new DOMDocument();
$xslDoc->load('nginxSearchPaginated.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet($xslDoc);
echo $xslt->transformtoXML($xmlDom1);

所有参数都需要来自REQUEST,如上所述。

这是我到目前为止尝试过的客户端:

$xslt = $xmlDom1->createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="clientSideFewSearch.xsl"');
$xslt->setParameter('', 'value', $_REQUEST['value']); // param 1
$xslt->setParameter('', 'column', $_REQUEST['column']); // param 2
$xslt->setParameter('', 'page', $_REQUEST['page']); // param 3
$xmlDom1->insertBefore($xslt,$xmlRoot1);
echo $xmlDom1->saveXML();

没有参数代码确实有效,但我需要参数用于分页。

任何帮助都会非常感谢

1 个答案:

答案 0 :(得分:0)

基本上有两种运行XSLT“客户端”的方法(我假设你的意思是在浏览器中)。第一种方法是使用内置于几乎所有浏览器的XSLT 1.0处理器。另一种是使用Saxon-JS,这是一个用Javascript编写的XSLT 3.0处理器。

如果您使用内置的XSLT 1.0处理器,您可以通过XML文件中的<?xml-stylesheet?>处理指令激活它(在这种情况下,除了拥有样式表之外,无法提供参数从一些XML文档中读取所需信息);或者你可以使用Sarissa API从Javascript调用转换,它有一个设置参数的方法:

XSLTProcessor.prototype.setParameter = function(nsURI, name, value){...}

如果你想使用Saxon-JS(它不仅提供XSLT 3.0,还允许样式表是交互式的,处理用户发起的事件),那么你可以使用{{1}提供参数}选项 - 请参阅http://www.saxonica.com/saxon-js/documentation/index.html#!api/transform(本身就是Saxon-JS应用程序)的文档。