この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:atom
更新日時:2026-06-11 07:10:02

タイトル: エンティティ" ... "への参照は';'デリミタで終了する必要があります。
SEOタイトル: 【Javaエラー】エンティティ" ... "への参照は';'デリミタで終了する必要があります。

この記事の要点
  • エンティティ "..." への参照は ";" デリミタで終了する必要がありますXML / HTML / JSP で & 文字をエスケープしていない
  • 原因: & はエンティティ参照の開始文字なので、文字として使うには & にエスケープ必須
  • 対処: URL のクエリ区切り、SQL の AND 等で & をそのまま書いている箇所を &
  • JSP / XML の場合は <c:out value="\${url}" /> で自動エスケープが安全

 

エラーの状況

XML エラー
エンティティ "page" への参照は ";" デリミタで終了する必要があります。

# または英語版
The reference to entity "page" must end with the ';' delimiter.

XML パーサがエンティティ参照(&...;)を期待した位置で、& の後に文字が続いて ; で終わらない、というエラー。HTML / JSP / XML / 設定ファイル等で発生します。

原因


  
  

結果: SELECT * FROM users WHERE active=true & deleted=false

XML パーサは & を見つけるとエンティティ参照の始まりと解釈します:

  • &amp;&
  • <<
  • >>
  • &quot;"
  • &#NNN; → 数値文字参照

これらの形式以外は不正と判定されてエラーになります。

対処方法

方法 1: & を & にエスケープ


  


SELECT * FROM users WHERE active=true & deleted=false

方法 2: JSP の c:out で自動エスケープ







    検索

方法 3: CDATA セクション


JSP での EL 式の自動エスケープ


<%@ page contentType="text/html;charset=UTF-8" %>


${userInput}

${fn:escapeXml(userInput)}

HTML の & エスケープ

HTML5 では「& + 既知のエンティティ名 + ;」以外の &そのまま許容されるのでブラウザ表示は壊れません。しかしXML として処理する場面(XHTML / SVG / XML 出力)では厳格にエラーになります。


  



  


サーバサイドでの自動エスケープ

Spring / Thymeleaf


プレースホルダ

プレースホルダ

Laravel Blade


{{ $userInput }}

{!! $trustedHtml !!}

React / Vue

// React は自動エスケープ

{userInput}

// &, <, > 自動エスケープ

// 危険 // Vue

{{ userInput }}

// 自動エスケープ

// 危険

設定ファイル(XML)でのエスケープ


http://example.com/?a=1&b=2



    jdbc/Pool&1




    https://example.com?a=1&b=2

JSON では & はそのままで OK

JSON は XML ではないので、& のエスケープは不要:

// JSON
{"url": "/search?q=hello&page=2"}  // OK

// ただし JSON を HTML に埋め込む際は HTML 側でエスケープが必要

関連エラー

  • The content of elements must consist of well-formed character data: <> をエスケープしていない
  • XML document structures must start and end within the same entity: タグ開閉不一致
  • Premature end of file: XML が途中で終わっている

関連記事