【问题标题】:Process XSLT with javascript instructions on the Server side in JAVA在 JAVA 中的服务器端使用 javascript 指令处理 XSLT
【发布时间】:2017-03-23 02:19:07
【问题描述】:

我收到了一个 XSLT 文件,其中包含嵌入的 javascript 代码,但与除 Internet Explorer 之外的任何浏览器都不兼容(Chrome 未显示所有内容,firefox 仅显示异常)

xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:js="urn:custom-javascript"

...

<msxsl:script language="JavaScript" implements-prefix="js"><![CDATA[
function doSomething() { ... }
function doStuff() { ... }
]]></msxsl:script>

由于客户端转换并不完美...我希望服务器端转换可以解决一些问题。不幸的是,我无法对给定的 XSLT 文件进行任何更改,但我确实在服务器端遇到了错误:

Caused by: javax.xml.transform.TransformerConfigurationException: The first argument to the non-static Java function 'doSomething' is not a valid object reference.

经过一些研究,似乎 Javascript 代码不能与 Xalan 或 Saxon 一起使用......但我找不到任何替代方案(当然除了更改 XSLT 代码......)

是否有任何其他库可以在服务器端使用 Javascript 处理 XSLT?或者我是否应该停止尝试找到我这边的解决方案。

【问题讨论】:

  • 任何扩展元素和脚本的使用都取决于 XSLT 处理器,给定 xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:js="urn:custom-javascript" 并且它与 IE 一起使用,处理器是 MSXML 3 或 6,您可以在任何使用 COM 的 Windows 操作系统上运行它Windows 上的许多脚本语言或编程语言提供的自动化。但在 Windows 之外不支持 MSXML。
  • 转换 Javascript 有多难?
  • 我不知道,我对 XSLT 没有任何真正的了解。我只需要在我们的产品中包含一个 XSLT,但是这个文件是由另一家公司开发的。我会联系他们,看看他们是否可以更改。

标签: javascript java xslt saxon xalan


【解决方案1】:

只是为了结束而添加一个答案:您是正确的,msxsl:script 标记中的 Javascript 扩展函数不适用于 Saxon,并且使样式表在 Saxon 下工作的唯一方法是重写扩展使用 Saxon 的等效设施的功能。

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 1970-01-01
    • 2012-02-15
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多