入力ドキュメントに doctype がなくてもドキュメントを解析するときに、SAX パーサー (具体的には Java の Xerces) に DTD を使用させるにはどうすればよいですか? これは可能ですか?
私のシナリオの詳細は次のとおりです。
複数の異なるシステムによって生成された同じ DTD に準拠する XML ドキュメントが多数あります (どれも変更できません)。これらのシステムには、出力ドキュメントに Doctype を追加するものと、追加しないものがあります。名前付き文字エンティティを使用するものもあれば、使用しないものもあります。doctype を宣言せずに名前付き文字エンティティを使用するものもあります。 私はそれがコーシャではないことを知っていますが、それは私が取り組まなければならないものです.
これらのファイルを Java で解析する必要があるシステムに取り組んでいます。現在、XML ドキュメントを最初にストリームとして読み込み、Doctype が定義されているかどうかを検出し、Doctype 宣言がまだ存在しない場合は追加することで、上記のケースを処理しています。問題は、このコードにバグがあることです。よりクリーンなものに置き換えたいと考えています。
ファイルが大きいため、DOM ベースのソリューションを使用できません。また、文字エンティティを解決しようとしているので、XML スキーマを使用しても役に立ちません。
解決策がある場合は、リンクではなく直接投稿していただけませんか? 将来、リンク切れの正しい解決策がある場合、スタック オーバーフローはあまり効果がありません。