实体名称必须紧跟在实体引用中的“&”之后。

12 浏览
0 Comments

实体名称必须紧跟在实体引用中的“&”之后。

我想在我的*.xhtml页面上放置一个吃豆人游戏。(我使用的是jsf 2和primefaces 3.5)

然而,

当我将html页面翻译成xhtml时,在这个脚本中我遇到了一个错误:

    

在这一行上:

if (Modernizr.canvas && Modernizr.localstorage && 

我得到了以下错误:

实体名称必须紧跟在实体引用中的'&'之后。

有任何修复的想法吗?

0
0 Comments

本文将介绍一个出现在代码中的问题:The entity name must immediately follow the '&' in the entity reference(实体名必须紧跟在实体引用中的'&'之后)。我们将解释这个问题出现的原因,并给出解决方法。

在代码中,如果想要使用特殊字符(如 '&'、'<'、'>'等),需要对其进行转义,以避免与HTML或XML中的标记混淆。例如,'&'需要被转义为'&','<'需要被转义为'<','>'需要被转义为'>'。

然而,在给定的代码示例中,开发者没有使用CDATA标记对脚本标记内的内容进行转义,也没有手动转义XHTML字符。这导致在引用实体时出现了错误。例如,'&'被错误地写成了'&'。

为了解决这个问题,我们可以在脚本标记内添加CDATA标记,将脚本内容包裹起来,告诉解析器不需要转义其中的特殊字符。CDATA标记的语法是:'//

以下是修复后的代码示例:

<script>
//<![CDATA[
var el = document.getElementById("pacman");
if (Modernizr.canvas && Modernizr.localstorage && 
    Modernizr.audio && (Modernizr.audio.ogg || Modernizr.audio.mp3)) {
  window.setTimeout(function () { PACMAN.init(el, "./"); }, 0);
} else { 
  el.innerHTML = "Sorry, needs a decent browser<br /><small>" + 
    "(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)</small>";
}
//]]>
</script>

通过在脚本标记内添加CDATA标记,我们告诉解析器不需要对脚本内容中的特殊字符进行转义。这样可以避免出现实体引用错误的问题。希望本文能够帮助读者理解并解决这个问题。

0
0 Comments

出现这个问题的原因是解析器将&作为实体的开始,类似于&egrave;。解决方法是使用以下的解决方案:

<script type="text/javascript">
// <![CDATA[
Javascript code here
// ]]>
</script>

通过使用这个解决方案,您可以指定代码不是HTML文本,而是作为数据使用。

0
0 Comments

问题的原因是在XML文档中使用了JavaScript代码,而XML解析器将其中的"&"字符解释为XML实体引用。当"&"后面没有紧跟着"#"时,解析器会隐式地寻找五个预定义的实体名称(lt、gt、amp、quot和apos)或任何手动定义的实体名称。由于在这种情况下,"&"被用作JavaScript运算符而不是XML实体,所以会出现XML解析错误,错误信息为"The entity name must immediately follow the '&' in the entity reference"。

解决方法一是将XML特殊字符进行转义,将"&"转义为"&amp;"。例如,将if语句中的"&"替换为"&amp;"。但这样会使JavaScript代码变得难以阅读和维护。

解决方法二是将JavaScript代码放在自己的JS文件中,并通过