2013-04-26 14 views
5

Xerces-Jを使用してXML文書を検証しようとしています。Xerces-jを使用してXML文書を検証する

私は、バリデーターが(schemalocation、nonamespaceschemalocationaおよびDOCTYPE参照を使用して)関連するXSDまたはDTDファイルをピックアップして解決するようにします。これらのリソースの読み込みをResolverクラスに委任できるようです。

しかし、私が見たすべてのサンプルは、スキーマからバリデータの作成を開始します。

xercesにXML文書の検証を依頼し、必要なものをロードするか、最初にXMLファイルを解析してスキーマ参照を探し、ロードしてからスキーマからのバリデータ?

理想的な世界でバリデータはまた、XSD 1.1

答えて

3

をサポートするあなたは<!DOCTYPE宣言またはスキーマ属性を検索するときに使用するのEntityResolverでパーサを提供します。最も一般的なエンティティリゾルバは、パブリックID、システムID、およびURIを物理ファイルに変換する辞書を定義するXMLファイルまたはテキストファイルであるカタログファイルを使用します。 org.apache.xml.resolverパッケージを参照してください。しかし、独自のEntityResolver実装を提供することもできます。

CatalogResolver resolver = new CatalogResolver(); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
dbf.setValidating(true); 
dbf.setFeature("http://apache.org/xml/features/validation/dynamic", true); 
DocumentBuilder parser = dbf.newDocumentBuilder(); 
parser.setEntityResolver(resolver); 
Document doc = parser.parse(someFile); 
関連する問題