How to include javaScript file in xslt
If you are trying to include a Javascript source in the generated HTML file, the script tag is the way. But many XSLT processors will choke if the tag is empty. If everything looks fine but you are getting empty output when you add the script tags, try inserting a non-breaking space within the tag as in:
<script type="text/javascript" src="SomePath/SomeFileName.js"> </script>
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>
This is what I did and it worked for me.
<script>
<![CDATA[
//ADD SCRIPT HERE.
]]>
</script>
Reference: https://www.w3schools.com/xml/dom_nodes_traverse.asp