/page.xhtml 구문 분석 오류 : 오류 추적 됨 [line : 42] 엔티티 "nbsp"가 참조되었지만 선언되지 않았습니다.


88

내 JSF 페이지에서 중단되지 않는 공백을 사용하고 싶습니다. 나는 일반 HTML  에서 이것을 사용할 수 있고 이것은 잘 작동한다는 것을 알고 있습니다. 그러나  Facelets 페이지에 넣으면 다음과 같은 오류가 발생합니다.

/page.xhtml 구문 분석 오류 : 오류 추적 [line : 42] 엔티티 "nbsp"가 참조되었지만 선언되지 않았습니다.

이 문제는 어떻게 발생하며 어떻게 해결할 수 있습니까?


더 많은 코드를 보여주세요 ...  정확히 어디에 배치 했나요?
Daniel

답변:


184

Facelets는 XML 기반보기 기술입니다. XML에는 5 개의 미리 정의 된 엔터티 만 있습니다. 은  그들 가운데 없습니다. 일반 HTML 또는 레거시 JSP에서 사용할 때만 작동합니다 (참고 : XML 기반이기 때문에 JSPX에서는 작동하지 않습니다!).

이 문제를 해결하려면 엔티티를 포함하는 바로 XHTML 파일의 doctype에서 엔티티를 직접 선언해야합니다  .

<!DOCTYPE html [
    <!ENTITY nbsp "&#160;"> 
]>

또는 더 나은 방법은 (16 진수) 표기법을 대신 사용하는 것입니다.

&#xA0; or &#160;

평균 IDE에서 "발견을 모든 파일에서 대체"수행의 모든 발생을 대체하는 사소한해야한다 &nbsp;에 의해를 &#xA0;.


3
16 진수 또는 10 진수 표기법을 사용하십시오. :-)
Nabin


10
  1. <![CDATA[&nbsp;]]>잘 작동합니다. 그러나 이것은 속성 값 내에서 작동 하지 않습니다 .

  2. 또는 &amp;XML에서 미리 정의 된 엔티티 인 한 시도해 볼 수 &amp;nbsp; 있습니다. XML 기반 JSP로 저를 위해 일했습니다. 이것은 속성 내에서도 작동합니다.


9

나를 위해 다음 doctype은 다음을 활성화합니다 &nbsp;.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

이를 통해 <xsl : variable name = "size"select = "substring-before (s : td [3], '& nbsp;')"/>와 같은 작업을 수행 할 수있었습니다.
slott

5

더하다

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

파일 맨 위로


4
왜 이것이 두 개의 네거티브를 얻었는지 궁금합니다. 너무 간결 할 수도 있지만 정확합니다. 엔티티가 doctype에 정의되지 않았으며 제공된 사양을 사용할 때 정의되었습니다. 1 년 후 누군가 똑같은 내용을 게시하고 두 개의 찬성표를 얻습니다.
Dilapidus

나는 @Dilapidus, 크롬과 제이보스 EAP 7 Facelets의 버전 2.2에서 나를 위해이 가공 한 완벽한 동의
JGlass
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.