1

ドキュメントで XSD スキーマが使用可能な場合、検証のために内部 DTD を無視することは可能ですか?

ソース ドキュメントでスキーマが指定されていない場合は、検証に DTD を使用する必要があります。

パーサーを構成する方法は次のとおりです。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);
factory.setFeature("http://apache.org/xml/features/validation/dynamic", true);

factory.setSchema(schemaFactory.newSchema());
builder.setErrorHandler(errorHandler);

「動的」機能を使用して、DTD が指定されている場合にのみパーサーが DTD 検証を実行するようにします。

ソース XML ドキュメントに XSD スキーマがある場合にのみ、DTD 検証を無視する必要があります。

DTD 宣言は DTD エンティティを宣言するためだけに使用され、スキーマ参照は W3C XML スキーマに対する検証に使用されることがあります。

問題は、DTD の検証が解析時にしか実行できず、その前にドキュメントに DTD または XSD への内部参照があるかどうかわからないことです。

4

1 に答える 1