这是我需要输出的节点:
<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;
我甚至试过做<xsl:text disable-output-escaping="yes">></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>