【问题标题】:Parameters Client Side XSLT参数 客户端 XSLT
【发布时间】:2017-03-13 21:15:35
【问题描述】:

这个服务器端版本设置 xslt 参数的等价物是什么,但使用客户端?

$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();

没有参数,代码确实可以工作,但我需要分页参数。

任何帮助都会非常感谢

【问题讨论】:

  • 您假设客户端已安装必要的软件来进行转换。为什么需要在客户端进行转换?
  • 我的讲师要求我这样做。
  • 我已经完成了服务器端的一切,但我需要在客户端重复练习
  • href 不是相对于从中加载文档的 URI 解析的吗?在这种情况下,样式表也是从服务器发送的。您可以尝试将参数添加到 URI,如 clientSideFewSearch.xsl?value=...&column=...&page=...。虽然我在规范中找不到任何说明这应该有效,但这是我首先要尝试的。
  • 就像您在服务器上使用 PHP 和 XSLT,您需要在客户端使用 Javascript 和 XSLT,developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor

标签: php xml xslt


【解决方案1】:

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

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

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

如果您想改用 Saxon-JS(它不仅提供 XSLT 3.0,而且还允许样式表是交互式的,在用户启动的事件发生时对其进行处理),那么您可以使用 stylesheetParams 选项提供参数- 请参阅http://www.saxonica.com/saxon-js/documentation/index.html#!api/transform 的文档(它本身就是一个 Saxon-JS 应用程序)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多