这是我需要输出的节点:
<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'之后和'javascript'之后的不到标志
现在我已尝试使用<
甚至&lt;
我甚至尝试过<xsl:text disable-output-escaping="yes">></xsl:text>
,但这也不起作用。
任何帮助将不胜感激。
答案 0 :(得分:1)
这对我来说可能是一个愚蠢的问题,但为什么不用这个替换所有这些混乱:
<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>
答案 1 :(得分:0)
以建议的评论者的身份在CDATA
中包装脚本标记的内容。然后,您可以考虑使用disable-output-escaping
,将<
作为<
作为文本,并使其在不转义的情况下输出。但是,HTML中JS中的<
仍然可能导致问题(特别是如果输出被视为XHTML)。你真的希望HTML输出到HTML中是CDATA本身,你可以使用cdata-section-elements="script"
中的<xsl:output>
属性来完成。这将把输出包装在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>