2012-11-30 21 views

回答

4

即使在技術上,如果我沒有記錯,許多(大多數)實現將被解釋爲URI而不是URL。

如果您想確保本地解決問題,請查看EntityResolver界面。

+0

那麼,它會在互聯網之前在哪裏找到dtd?我的意思是,doctype引用是一個http url;有沒有一種邏輯將其轉換爲類路徑查找?我注意到struts jar裏面都有dtd。 – chad

+0

好吧,DTD在互聯網之前並不存在:-)無論如何,doctype引用看起來像一個http URL,但這僅僅是約定 - 它確實是一個URI(它有一個區別),並不一定映射到一個有效的URL 。我很多年都沒有使用Struts,但我猜測它包含DTD並使用EntityResolver在本地解決它們。 – GreyBeardedGeek

2

根據Xerces documentation,當驗證處於打開狀態時,解析器可能嘗試從互聯網下載文件。但我真的認爲這可以從解析器轉換爲解析器,因爲庫可能決定使用本地緩存,代理服務器或其他。

+0

我看到了。我找不到關於其他位置的更多細節,以及以什麼順序嘗試查找dtd。文件系統?類路徑? – chad

+1

我想,因爲這是一個實現細節,所以沒有更好的文檔說明源代碼和調試器 – Raffaele