在Cocoon / XSLT中包含外部.js

时间:2014-11-23 20:58:04

标签: javascript xslt

我正在尝试在我正在Cocoon / XSLT中构建的页面中包含一个外部.js文件。

Dir Struct:

/my_project
    /xsl/my_page.xsl
    /js/my_scripts.js
    sitemap.xmap

在Sitemap中:

<map:match pattern="my_page.html">
    <map:generate src="cocoon:/my_data.xml" />
    <map:transform src="xsl/my_page.xsl" type="xslt2">
        <map:parameter name="baselink" value="{baselink:SitemapBaseLink}" />
    </map:transform>
    <map:serialize type="html5" />
</map:match>

在my_page.xsl中:

<xsl:param name="baselink" />
...
<script src="//code.jquery.com/jquery-1.11.1.min.js">&#160;</script>
<script src="../js/my_scripts.js" type="text/javascript">&#160;</script>

在my_scripts.js中,我只有一行用于测试:

console.log('Success');

当我在浏览器中查看源代码时,我看到包含了脚本标记,但上面的日志语句不会执行。

HTML:

<!DOCTYPE html SYSTEM "about:legacy">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
        …
    </head>
    <body>
        …
        <script src="//code.jquery.com/jquery-1.11.1.min.js"> </script>
        <script src="../js/my_scripts.js" type="text/javascript"> </script>
    </body>
</html>

因此,尽管脚本标记位于代码中,但我不确定它是否实际指向源代码 - 或者日志语句将执行。

当我查看网络标签(Firebug)的JavaScript部分时,我看到:

GET my_scripts.js 200 OK

以下条目位于控制台中:

<?xml version="1.0" encoding="UTF-8"?> my_scripts.js (line 1)

为了在XSL中包含外部.js,我还需要做什么/“特殊”吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

固定。

在Sitemap中添加了以下内容:

<map:match pattern="**.js">
    <map:read src="js/{1}.js" mime-type="text/javascript" />
</map:match>

将javascript include更改为:

<script src="my_scripts.js" type="text/javascript">&#160;</script>