EPUB 제작의 기초/EPUBCheck 오류

엔티티가 선언되지 않았습니다.

내.맘.대.로 2025. 9. 29. 07:45

Entity is undeclared.

 

이 오류는 HTML/XHTML 문서에서 **정의(선언)되지 않은 '엔티티(entity)'**를 사용했음을 의미합니다.

'엔티티'는 <(&lt;)나 >(&gt;)처럼 코드에서 특별한 의미를 갖는 문자, 또는 키보드로 입력하기 어려운 특수문자를 표현하기 위한 일종의 약속된 코드(예: &nbsp;, &copy;)입니다.

비밀 암호를 사용하기 전에 친구에게 그 암호의 의미를 미리 알려줘야 하는 것과 같습니다. 🤫 이 오류는 문서 상단에 '이 암호는 이런 뜻이야'라고 정의하지 않은 채, 본문에서 암호(이름 기반 엔티티)를 사용했다는 의미입니다. 특히 엄격한 규칙을 따르는 EPUB 2 (XHTML 1.1)에서 매우 흔하게 발생합니다.


## 해결 방법

두 가지 해결 방법이 있으며, 첫 번째 방법을 강력히 추천합니다.

### 해결 방법 1: 숫자 코드로 대체하기 (권장)

이름으로 된 엔티티 대신, 모든 시스템에서 항상 작동하는 숫자 코드로 바꿔주는 것이 가장 안전하고 확실한 방법입니다. 숫자 코드는 미리 선언할 필요가 없습니다.

  1. 오류가 발생한 이름 기반 엔티티를 찾습니다.
  2. 해당 엔티티를 아래 표와 같이 해당하는 숫자 코드로 교체합니다.
이름 기반 엔티티 (오류 발생 가능) 숫자 코드 (안전) 설명
&nbsp; &#160; 줄바꿈 없는 공백
&copy; &#169; 저작권(Copyright) 기호 ©
&mdash; &#8212; 긴 대시(em-dash) —
&reg; &#174; 등록 상표(Registered) 기호 ®
&bull; &#8226; 글머리기호 •
Sheets로 내보내기

### 해결 방법 2: 엔티티 직접 선언하기 (고급)

파일 상단의 DOCTYPE 선언부에 사용할 엔티티를 직접 정의하는 방법입니다. 구조가 복잡해질 수 있어 권장하지는 않습니다.

  • 수정 예시 (&nbsp;를 직접 선언하는 경우):
  • XML
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
      <!ENTITY nbsp "&#160;">
    ]>
    <html>
      ...
    </html>
반응형