XSLT中的JavaScript输出不正确



这是我需要输出的节点:

<script language="javascript" type="text/javascript">
    document.Echo=document["standard"+"Write"]==null?document["write"]:document["standard"+"Write"];
    var include=function(path) {
        path="http://www.WebsiteName.com/eBay_files_ybr/js/"+path;
        document.Echo('<' + 'script src="' + path + '"' +' type="text/javascript"><' + '/script>');};
    include("jquery.js");
    include("accrodion-menu.js");
</script>

我遇到的问题是(你猜对了)在"Echo"one_answers"javascript"之后的小于号

现在我已经尝试过使用&lt;甚至&amp;lt;

我甚至试过做<xsl:text disable-output-escaping="yes">&gt;</xsl:text>,但也没用。

如有任何帮助,我们将不胜感激。

这对我来说可能是一个愚蠢的问题,但为什么不用来代替所有这些混乱呢

<xsl:variable name="scriptPath"
              select="'http://www.WebsiteName.com/eBay_files_ybr/js/'" />
<script src="{$scriptPath}jquery.js"> </script>
<script src="{$scriptPath}accordion-menu.js"> </script>

按照评论者的建议,将脚本标记的内容包装在CDATA中。然后,您可以考虑使用disable-output-escaping,这将使<作为文本成为<,并使其在不转义的情况下输出。然而,HTML中JS中的<仍然可能导致问题(尤其是在输出被视为XHTML的情况下)。您确实希望HTML中的JS输出本身是CDATA,这可以使用<xsl:output>中的cdata-section-elements="script"属性来实现。这将把输出包装在CDATA中,这样它就不会被转义,不会给HTML解析器带来任何问题。

<xsl:output ... cdata-section-elements='script'/>
<xsl:template ...
    <script><![CDATA[
        document.Echo=document["standard"+"Write"] == null ? document["write"] : document["standard"+"Write"];
        var include = function(path) {
            path = "http://www.WebsiteName.com/eBay_files_ybr/js/" + path;
            document.Echo('<script src="' + path + '"></script>');
        };
        include("jquery.js");
        include("accordion-menu.js");
    ]]></script>
    ...
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新