1

XSLT 変換 (Java 6) を使用する Web アプリケーションがあります。XSL ファイル (basic.xsl) は、次のように DOCTYPE DTD を参照します。

基本.xsl

<!DOCTYPE stylesheet SYSTEM "MyXslt.dtd">

統合テストを使用してこのロジックを使用するコントローラー エンドポイントをヒットすると、正常に実行されます。しかし、同じエンドポイントが Fiddler からヒットすると、エラーが発生します。

エラー: 'C:\tools\eclipse\src\com\abc\xslt\MyXslt.dtd (指定されたパスが見つかりません)' FATAL ERROR: 'Could not compile stylesheet'

MyXslt.dtd はワークスペース ディレクトリにあります。だからここにフルパスがあります -

C:\Workspace\src\com\abc\xslt\MyXslt.dtd

残りのパスは正常に解決されていますが、ベース パスはワークスペースではなく、Eclipse が存在する場所から開始されています。

DTD を見つけるにはどうすればよいですか?

編集:

いくつかのポスターは、絶対パスを与えることを提案しています。アプリケーションがさまざまなサーバー (ローカル マシンではない) に展開されるため、これは機能しません。異なるサーバー内で絶対パスを与えることはできませんし、与えるべきではありません

おそらく、参照されたDTDをEclipseルートではなく現在の場所に対して相対的に解決するように強制するJavaカスタムURIリゾルバーの設定など、方法が必要です。何か案は?

4

2 に答える 2

0

最も重要なことは、使用しているツールの開発者にバグを報告することのようです。XSLT スタイルシートの相対 URI は、アプリケーションの場所ではなく、スタイルシートの場所を基準にして解決する必要があります。

当面の間、可能な回避策には、絶対参照を使用し、文書型宣言をコメントアウトすることが含まれます。

于 2013-06-22T15:25:52.050 に答える