當 XML 檔案宣告 PUBLIC DTD 且離線無法連網下載時,Eclipse 會報驗證錯誤。本文解析 DOCTYPE 解析原理,並示範如何透過 XML Catalog 將 PUBLIC ID 映射至本地 DTD 檔案,消除紅叉錯誤。
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"https://java.sun.com/dtd/ejb-jar_2_0.dtd">
-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN —— 全域唯一邏輯名稱。https://java.sun.com/dtd/ejb-jar_2_0.dtd —— 實體下載位置。解析器優先嘗試根據 PUBLIC ID 尋找本地快取;找不到才回退下載 SYSTEM ID。離線環境下若無本地映射,驗證即失敗。
D:\dtd\ejb-jar_2_0.dtd)Public ID-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN

XML Catalog 讓 Eclipse 在解析 PUBLIC ID 時直接導向本地檔案,避免網路請求,適用於離線開發、企業內網隔離環境。