2011-12-23 15 views
1

XSLスタイルシート内で、document()関数をXMLファイルへの相対パスで使用しようとしています。ロードしようとしているXMLファイルは、スタイルシートと同じフォルダにあります。バックエンドのコードは、変圧器WebLogicで相対パスでxslt document()関数を呼び出す

Javaコード

TransformerFactory tFactory = TransformerFactory.newInstance(); 
    InputStream inXSL = getClass().getResourceAsStream("/input.xsl"); 
    Transformer transformer = tFactory.newTransformer(new StreamSource(inXSL)); 
    transformer.transform(new StreamSource(inXMLStream), new StreamResult(outStream)); 

XSL

<xsl:variable name="configXml" select="document('config.xml')" /> 

しかし、ファイルをロードしていないよう何らかの理由で、それは次のようになりますを使用してXSLTを起動していますエラー、 FODC0005:java.io.FileNotFoundException:D:\ Applications \ weblogic_domain \ config.xml XSLがWebアプリケーションパスではなくWebLogicドメインフォルダ内のファイルを検索しているようです。

答えて

2

StreamSourceを指定してsystemIdを設定しないため、XSLTプロセッサはスタイルシートがどこからロードされたかわからないため、相対URIをインテリジェントに解決できません。 StreamSourceでsetSystemId()メソッドを使用して、スタイルシートのベースURIを設定します。

関連する問題