Dim*_*hev 21
如果你需要在转换中使用javascript(例如,它包含一组在转换中调用的扩展函数),你需要将javascript内容(至少是一个javascript文件的内容)放在一个单独的XSLT样式表中文件,使用适当的扩展元素(如<msxml:script>)作为包含javascript代码的文本节点的父节点.
这是一个非常简单的示例,使用任何Microsoft XSLT处理器(MSXML3/4/6,XslCompiledTransform或XslTransform):
文件XSL-JS.xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">
<msxsl:script language="JScript" implements-prefix="user">
function xml(nodelist) {
return "A B C";
}
</msxsl:script>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
导入javascript的文件XSL-Main.xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">
<xsl:import href="XSL-JS.xsl"/>
<xsl:template match="/">
<xsl:value-of select="user:xml(.)"/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
当包含在文件XSL-Main.xsl中的转换应用于任何XML文档(未使用/忽略)时,将生成所需的正确结果:
A B C
Run Code Online (Sandbox Code Playgroud)
一个完全不同的情况是,如果您只想使用XSLT应用程序生成一个引用给定Javascript文件的HTML文件.
然后,将其包含在XSLT代码中,并将其作为输出的一部分生成:
<script type="text/javascript" src="SomePath/SomeFileName.js"></script>
Run Code Online (Sandbox Code Playgroud)
bit*_*ler 11
如果您尝试在生成的HTML文件中包含Javascript源代码,则可以使用脚本标记.但是,如果标记为空,许多XSLT处理器将会阻塞.如果一切看起来都很好但是在添加脚本标记时输出为空,请尝试在标记中插入一个不间断的空格,如下所示:
<script type="text/javascript" src="SomePath/SomeFileName.js"> </script>
Run Code Online (Sandbox Code Playgroud)
小智 9
这就是我所做的,它对我有用.
<script>
<![CDATA[
//ADD SCRIPT HERE.
]]>
</script>
Run Code Online (Sandbox Code Playgroud)
参考:http://www.w3schools.com/xml/xml_cdata.asp
| 归档时间: |
|
| 查看次数: |
44543 次 |
| 最近记录: |