You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT中添加window resize条件报错:名称不能以空格开头的解决问询

解决XSLT中嵌入响应式轮播JS的XML解析错误

这个错误的根源是XSLT作为XML格式的文档,会自动解析script标签内的文本内容,当你的JavaScript代码里包含<这类XML特殊字符时(哪怕你转成了&lt;),XML解析器可能还是会误把代码片段当成XML元素来处理,最终抛出"Name cannot begin with the ' ' character"这类解析错误。

最可靠的解决方案:用CDATA块包裹JavaScript代码

在XSLT中嵌入JS时,把所有JS代码放在<![CDATA[ ... ]]>块里,告诉XML解析器:"这段内容是纯文本,不要解析它",这样就能彻底避免XML语法冲突。

修正后的代码如下:

<script type="text/javascript">
<![CDATA[
$(document).ready(function() {
  $("#carousel").waterwheelCarousel({
    forcedImageWidth: 700,
    forcedImageHeight: 555,
    separation: 500
  });
});

$(window).resize(function(){
  if(window.innerWidth < 1024){
    $("#carousel").waterwheelCarousel({
      forcedImageWidth: 400,
      forcedImageHeight: 255,
      separation: 100
    });
  } else {
    alert('hi');
  }
});
]]>
</script>

为什么之前的写法会出错?

你尝试用&lt;转义<,但在XSLT的script标签中,XML解析器仍然会扫描整个内容的结构。当解析器遇到&lt;之后的内容时,可能会错误地将后续的空格和代码片段识别为XML元素的名称——而XML规定元素名称不能以空格开头,这就是你看到的报错原因。

额外注意事项

  • 确保CDATA块正确闭合:不要在JS代码里出现]]>(如果必须用,需要拆分成]]><![CDATA[)
  • 不需要再手动转义<、&这类字符,CDATA会帮你处理所有特殊字符

内容的提问来源于stack exchange,提问作者Kevlwig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:27:37