getAssociatedStylesheet(Source source, String media, String title, String charset) が TransformerFactoryImpl クラスで TransformerConfigurationException をスローするコードを見てください。
上記の関数の定義は、source パラメータ (本質的には SAXSource オブジェクト) を介して引数として渡した XMLReader を無視しています。上記の関数は、新しい SAXParserFactory オブジェクトを作成した後に、新しい XMLReader を作成しています。このため、私たちが直面している問題は、入力 XML ファイルの解析中に、パブリック ID とシステム ID によって指定された DOCTYPE セクションと外部 DTD の解析が続行されることです。XMLReader は XML ファイルの解析に使用されず、リーダーに登録された EntityResolver は使用されないため、外部 DTD は解決されず、getAssociatedStylesheet 関数は例外で失敗します。
ただし、他の関数public Templates を見ると newTemplates(Source source) は TransformerFactoryImpl クラスで TransformerConfigurationException をスローします。この関数は、渡されたソース引数が SAXSource であるかどうかを具体的にチェックし、そうである場合、ソースに XMLReader が存在する場合、新しい XMLReader オブジェクトを作成しません。
これはバグですか?何かご意見は?
XalanJ バージョン: 2.7.1 ソース ファイル パス: src\org\apache\xalan\processor\TransformerFactoryImpl.java
ありがとう!厳しいグプタ Adobe Systems