1、xml文件聲明的dtd文件路徑如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar >
。。。。。。
</ejb-jar>
2、dtd聲明解析原則:
DOCTYPE聲明不僅包含常規的關鍵字和根元素名稱,而且包含指示外部DTD源的關鍵字和DTD的位置。XML規范定義了幾種聲明源的方法。聲明中可以使用關鍵字SYSTEM或PUBLIC。如果使用SYSTEM關鍵字,解析器將僅根據給出的URL尋找DTD?DTD通過URL顯式地直接定位。
然而,如果DTD源關鍵字為PUBLIC,情況就略微復雜一些。PUBLIC關鍵字用於聲明眾所周知的詞匯表。例如,假設出版界已經對圖書種類DTD達成了大量共識。需要根據該詞匯表解析文檔的應用程序可能會通過某種策略來定位DTD。如果這個DTD非常普及,應用程序或許有本地拷貝。直接使用本地拷貝可能比從Web服務器上遠程下載更可取。DTD可能存放在數據庫中,或者可以通過其他與應用程序相關的技術獲得。如果使用PUBLIC關鍵字和URI,應用程序就有機會利用自己的算法定位DTD。統一資源標識符(URI)可以是URL,也可以是一個單獨的名字。
例如:
<!DOCTYPE ejb-jar PUBLIC “universal/publishing/book”
“http://www.myweb.com/dtd/books.dtd” >
如果URI“universal/Publishing/Book”對於處理這類文檔的應用程序來說是已知的,應用程序可以通過某種有效的方式自行尋找DTD。或許我們恰好有適合該領域的解析器。它可能有DTD的本地拷貝,或者它可以訪問由本地數據庫服務器維護的DTD。最關鍵的是,尋找DTD的方法主要是由負責處理DOCTYPE聲明的應用程序確定的。
當然,“眾所周知”通常是相對的。因此,XML1.0允許PUBLIC聲明同時有公共URI和系統標識符。如果使用文檔的應用程序或解析器不能從PUBLIC關鍵字提供的URI定位DTD,它必須使用系統標識符。
在本例中,文檔的設計者允許作為接收方的應用程序根據公共的URI自行尋找DTD。如果該過程失敗,對我們的出版領域不熟悉的通用解析器一般屬於這種情況,應用程序可以從地址為http://www.myweb.com/的Web服務器請求指定的文件,即獲取網絡上的dtd文件:http://www.myweb.com/dtd/books.dtd。
3、Eclispe中配置dtd路徑:
如果初始狀態下沒有配置ejb-jar.xml文件的dtd路徑,而eclipse又不能去sun公司validate的情況下,eclipse報錯。
可以根據ejb-jar.xml文件聲明的PUBLICDOCTYPE,指示eclipse到一個本地的dtd文件去驗證。
已聲明的"-//SunMicrosystems,Inc.//DTDEnterpriseJavaBeans2.0//EN"為本地dtd文件的一個別名。
可以利用Eclipse的【XMLCatalog】來配置:
添加一個【UserSpecifiedEntries】,用戶自定義的本地dtd驗證入口:
【Add…】 à
保存,然後在ejb-jar.xml文件上右鍵->[ValidateXmlfile],Eclipse提示驗證通過,不再提示錯誤。