엔티티 이름은 엔티티 참조의 '&' 바로 뒤에 와야 합니다.
*.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개의 특수 문자가 있습니다.
<
꼬리표의 첫머리>
꼬리표의 끝"
속성 값의 시작과 끝.'
속성 값의 시작과 끝을 대체합니다.&
의작으로 는)는);
).
의 &
뒤에 안 오는#
(예를 들면 
, 
, etc), XML 파서가 미리 정의된 다섯 개의 엔티티 이름 중 하나를 암묵적으로 찾고 있습니다. lt
,gt
,amp
,quot
그리고.apos
, 또는 수동으로 정의된 엔티티 이름.하지만, 당신의 특정한 경우에, 당신은&
XML 엔티티가 아닌 자바스크립트 연산자로서.XML 구문 분석 오류에 대해 자세히 설명합니다.
엔티티 이름은 엔티티 참조의 '&' 바로 뒤에 와야 합니다.
본질적으로 자바스크립트 코드를 JS 파일이 아닌 XML 문서로 잘못 작성하고 있기 때문에 그에 따라 모든 XML 특수 문자를 탈출해야 합니다.&
야함함야esd으로 탈출해야 합니다.&
.
그러니까, 당신의 특별한 경우에는
if (Modernizr.canvas && Modernizr.localstorage &&
되여야만 합니다
if (Modernizr.canvas && Modernizr.localstorage &&
XML을 사용할 수 있습니다.
그러나 이것은 자바스크립트 코드를 읽고 유지하기 어렵게 만듭니다.g를 계속 하고 싶을 경우&
에 대신에&
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: Error Tracked[line: 42] 엔티티 "nbsp"가 참조되었지만 선언되지 않았습니다.
- HTML 4/5로 JSF+Faclet을 사용할 수 있습니까?
- 페이스릿 템플릿에서 CSS / JS / 이미지 리소스를 참조하는 방법은?
모든 XHTML 문자(예: 모든 XHTML 문자)를 수동으로 통과하고 탈출하지 않으려면 스크립트 태그 안에 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>
파서는 HTML 컨텐츠를 예상하고 있으므로 다음을 볼 수 있습니다.&
하나의 실체의 시초로서, 예를 들어.è
.
다음 해결 방법을 사용합니다.
<script type="text/javascript">
// <![CDATA[
Javascript code here
// ]]>
</script>
따라서 코드가 HTML 텍스트가 아니라 그대로 사용할 데이터임을 지정합니다.
도
<script>//<![CDATA[
/* script */
//]]></script>
XHTML을 사용하는 경우, 어떤 이유에서인지 XHTML 1.0 C 4에는 "스크립트가 <또는 &또는 ]> 또는 --를 사용하는 경우 외부 스크립트를 사용하십시오."라고 나와 있습니다.즉, 스크립트 코드를 내장하지 마십시오.script
element 그러나 그것을 별도의 자바스크립트 파일에 넣고 참조합니다.<script src="foo.js"></script>
.
혹시 블로거에서 사람이 올 경우를 대비해서 사용할 때 이런 문제가 생겼습니다.Beautify
VSCode에서 확장.쓰지 마, 쓰지 마, 안 돼, 안 돼, 안 돼, 안 돼, 안 돼, 안 돼.beautify
그것.
언급URL : https://stackoverflow.com/questions/16303779/the-entity-name-must-immediately-follow-the-in-the-entity-reference
'source' 카테고리의 다른 글
XML은 대소문자를 구분합니까? (0) | 2023.09.16 |
---|---|
Java Spring에 MariaDB 동적 기둥 연결 (0) | 2023.09.16 |
바이트 배열을 이미지로 변환하는 방법? (0) | 2023.09.16 |
CLI를 사용하여 Angular Project의 특정 버전을 만드는 방법? (0) | 2023.09.16 |
MySQL에서만 지난 3개월 동안의 레코드 반환 (0) | 2023.09.16 |