如何在xsl文档中使用javascript函数
How to use javascript functions in xsl document?
我在我的xsl文档中有以下代码:我试图应用它,但它返回以下错误:错误:XSLTProcessor: transformToXml (XSLTProcessor()。: XPath计算没有返回结果。有人知道吗?
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:user="http://mycompany.com/mynamespace"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.0">
<xsl:output method="text" encoding="UTF-8" />
<xsl:template match="/">
<xsl:value-of select="CARRIERNAME"/>
<xsl:value-of select="user:FormatescapeEmbeddedCommas()"/>
</xsl:template>
<msxsl:script language="javascript" implements-prefix="user">
function FormatescapeEmbeddedCommas() {
return "ABC";
}
</msxsl:script>
</xsl:stylesheet>
<msxsl:script language="javascript" implements-prefix="user">
在Chrome中不支持XSL中脚本的Microsoft扩展。
如果您希望您的XSL在浏览器中工作,请查看这个XSLT浏览器比较图,因为跨浏览器的支持非常有限。
最好的选择是使用XSLT 1.0-only结构,而不是使用外部文档(xsl:import
, document()
函数),因为这些在Chrome默认情况下是被阻止的,如果你需要函数,使用命名模板,因为创建跨浏览器扩展函数会很棘手(我不确定Chrome是否支持这个,但肯定不支持MS命名空间)。
如果您确实需要使用特定于供应商的扩展,请确保在这些指令周围添加xsl:if
,并使用system-property('xsl:vendor')
测试子句,这将检查您是哪种浏览器。
我发现给定的错误相当奇怪,我本来希望它是类似于"function not found"的东西。
请注意,在默认情况下,即使在Internet Explorer中,XSLT脚本也是默认禁用的。
如果您有机会在浏览器之外运行样式表,您可能会节省很多麻烦和宝贵的时间,并且它可能使您能够使用XSLT 2.0或3.0,而不仅仅是XSLT 1.0。Saxon有一个基于js的XSLT 2.0处理器版本,名为Saxon- ce, Frameless是XSLT 2.0规范大部分内容的跨浏览器实现,并声称是轻量级的。XSLT 2.0对使用扩展函数或指令的要求要少得多,因为它更加灵活,允许您使用xsl:function
创建自己的样式表函数。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别