How can I include/import javaScript file/libary in xslt file.
Advertisement
Answer
If you need to use the javascript in the transformation (for example, it contains a set of extension functions that are called within the transformation), you need to put the javascript contents (at least that of one javascript file) in a separate XSLT stylesheet file, using the proper extension element (such as <msxml:script>
) as the parent of the text-node that contains the javascript code.
Here is a very simple example, using any Microsoft XSLT processor (MSXML3/4/6, XslCompiledTransform or XslTransform):
file 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>
File XSL-Main.xsl that is importing the javascript:
<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>
When the transformation, contained in the file XSL-Main.xsl is applied on any XML document (not used/ignored), the wanted, correct result is produced:
A B C
A completely different case is if you just want to generate with your XSLT application an HTML file that references a given Javascript file.
Then you include this in your XSLT code and generate this literally as part of the output:
<script type="text/javascript" src="SomePath/SomeFileName.js"></script>