source

엔티티 이름은 엔티티 참조의 '&' 바로 뒤에 와야 합니다.

nicesource 2023. 9. 16. 09:28
반응형

엔티티 이름은 엔티티 참조의 '&' 바로 뒤에 와야 합니다.

*.xhtml 페이지에 팩맨 게임을 넣고 싶습니다.(jsf 2와 프라임페이스 3.5를 사용하고 있습니다.)

하지만,

html의 html 페이지를 "번역"하면 다음 스크립트에서 오류가 발생합니다.

    <script>

    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>

줄에:

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

알 수 있습니다.

엔터티 이름은 엔터티 참조의 '&' 뒤에 바로 와야 합니다.

어떻게 고쳐야 할지 아세요?

지금까지 올라온 답변들은 모두 정답을 제시하고 있지만, 어느 누구도 구체적인 문제의 근본 원인을 제대로 설명하지 못했습니다.

페이스릿은 XML 기반 뷰 기술로, XHTML+XML을 사용하여 HTML 출력을 생성합니다.XML에는 XML 파서에 의해 특별한 처리가 있는 5개의 특수 문자가 있습니다.

  • <꼬리표의 첫머리
  • >꼬리표의 끝
  • "속성 값의 시작과 끝.
  • '속성 값의 시작과 끝을 대체합니다.
  • &의작으로 는)는);).

&뒤에 안 오는#(예를 들면&#160;,&#xA0;, etc), XML 파서가 미리 정의된 다섯 개의 엔티티 이름 중 하나를 암묵적으로 찾고 있습니다. lt,gt,amp,quot그리고.apos, 또는 수동으로 정의된 엔티티 이름.하지만, 당신의 특정한 경우에, 당신은&XML 엔티티가 아닌 자바스크립트 연산자로서.XML 구문 분석 오류에 대해 자세히 설명합니다.

엔티티 이름은 엔티티 참조의 '&' 바로 뒤에 와야 합니다.

본질적으로 자바스크립트 코드를 JS 파일이 아닌 XML 문서로 잘못 작성하고 있기 때문에 그에 따라 모든 XML 특수 문자를 탈출해야 합니다.&야함함야esd으로 탈출해야 합니다.&amp;.

그러니까, 당신의 특별한 경우에는

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

되여야만 합니다

if (Modernizr.canvas &amp;&amp; Modernizr.localstorage &amp;&amp;

XML을 사용할 수 있습니다.

그러나 이것은 자바스크립트 코드를 읽고 유지하기 어렵게 만듭니다.g를 계속 하고 싶을 경우&에 대신에&amp;XML 문서의 자바스크립트 코드에서, 당신은 문자 데이터(CDATA) 블록에 자바스크립트 코드를 배치해야 합니다.따라서 JSF 용어로 하면 다음과 같습니다.

<h:outputScript>
    <![CDATA[
        // ...
    ]]>
</h:outputScript>

XML 구문 분석기는 블록의 내용을 XML이 아닌 "평판 바닐라" 문자 데이터로 해석하므로 XML 특수 문자를 "있는 그대로"로 해석합니다.

를, JS 의 JS JS 이 이 한 에 이 이 <script src>, 또는 JSF 용어로,<h:outputScript>.

<h:outputScript name="onload.js" target="body" />

(참고:target="body"; 이런 방식으로 JSF는 자동적으로<script>맨 끝에<body>, 장소를 불문하고<h:outputScript>그 자체가 위치하고, 이에 따라 다음과 같은 효과를 얻을 수 있습니다.window.onload그리고.$(document).ready(); 따라서 해당 스크립트에서 더 이상 이를 사용할 필요가 없습니다.

이렇게 하면 JS 코드의 XML 특수 문자에 대해 걱정할 필요가 없습니다.추가적인 보너스로 브라우저가 JS 파일을 캐시하여 전체 응답 크기를 줄일 수 있는 기회를 제공합니다.

참고 항목:

모든 XHTML 문자(예: 모든 XHTML 문자)를 수동으로 통과하고 탈출하지 않으려면 스크립트 태그 안에 CDATA 태그를 추가해야 합니다.&될 필요가 있을 것입니다.&amp;). 예를 들어,

<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>

파서는 HTML 컨텐츠를 예상하고 있으므로 다음을 볼 수 있습니다.&하나의 실체의 시초로서, 예를 들어.&egrave;.

다음 해결 방법을 사용합니다.

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

따라서 코드가 HTML 텍스트가 아니라 그대로 사용할 데이터임을 지정합니다.

<script>//<![CDATA[
    /* script */
//]]></script>

XHTML을 사용하는 경우, 어떤 이유에서인지 XHTML 1.0 C 4에는 "스크립트가 <또는 &또는 ]> 또는 --를 사용하는 경우 외부 스크립트를 사용하십시오."라고 나와 있습니다.즉, 스크립트 코드를 내장하지 마십시오.scriptelement 그러나 그것을 별도의 자바스크립트 파일에 넣고 참조합니다.<script src="foo.js"></script>.

혹시 블로거에서 사람이 올 경우를 대비해서 사용할 때 이런 문제가 생겼습니다.BeautifyVSCode에서 확장.쓰지 마, 쓰지 마, 안 돼, 안 돼, 안 돼, 안 돼, 안 돼, 안 돼.beautify그것.

언급URL : https://stackoverflow.com/questions/16303779/the-entity-name-must-immediately-follow-the-in-the-entity-reference

반응형