0

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

ありがとう!厳しいグプタ Adob​​e Systems

4

2 に答える 2

1

Saxon は、登録されたカスタム エンティティ リゾルバーを使用して、関連付けられたスタイルシートを完全に見つけることができるため、XalanJ で変換が行われるときはいつでも、Saxon を使用して関連付けられたスタイルシートを取得します。

関連付けられたスタイルシートを取得したら、入力ファイルとスタイルシートを Xalan に渡して変換します。

于 2014-05-25T10:57:02.547 に答える