2017-09-20 5 views
0

Maven XMLプラグインを使用するように設定されたMavenビルド中に、document()関数を使用して兄弟XMLドキュメントをロードするXSLスタイルシートは、相対参照を使用してファイルを見つけることができず、エラーが発生します。私はSaxon-HE 9.7.0-14をXSLTプロセッサとして使用しています。Maven XML Plugin - document()関数を使用して変換にURIResolverまたはSystemIDを定義する方法は?

次のエラーが発生し<xsl:value-of select="document('file-2.xml')/someElementTag">を使用するXSLスタイルシート使用file-1.xmlを変換しながら:

Recoverable error FODC0002: I/O error reported by XML parser processing file:/C:/MyWorkspace/transform/src/main/resources/stylesheets/file-2.xml: C:\MyWorkspace\transform\src\main\resources\stylesheets\file-2.xml (The system cannot find the specified file)

どのように私は親戚の文書の参照を解決するためにシステムIDやURIResolverとMavenのXMLプラグインを設定することができますか?

+1

エラーメッセージが相対URI 'ファイル2.xml'が'ファイルに解決された示唆:それはないですので、/マイワークスペース/変換/ srcに/メイン/リソース/スタイルシート/ファイル2.xml':/ CベースURIを持たないという問題。 'document( 'file-2.xml'、/)を使用すると正しい場所が得られますか(入力文書のベースURIを基準にして解決されますか? –

+0

魅力的な作品です。これを回答として投稿できますか? –

+0

私は、提案と、URIを解決するための 'document'関数の第2引数を説明するspecテキストで答えを書いています。 –

答えて

1

エラーメッセージは、XSLTプロセッサを使用して、URI参照は相対的であり

言うhttps://www.w3.org/TR/xslt#documentを読めば、相対URIは、渡された解決ができることを示唆しています。ベースURIは、(参照[3.2ベースURI]) 絶対URIに相対URIを解決するためのベースURIとして使用されている文書 ために、最初に第二引数ノードセット内のノードの 。 2番目の引数が省略された場合、デフォルトで スタイルシート内のノードには、ドキュメント関数の呼び出しである が含まれています。

次に、スタイルシートURIを基準にした相対URIが解決されていることがわかります。入力ドキュメントのルートノードのベースURIを基準にして解決するには、document('file-2.xml')の代わりにdocument('file-2.xml', /)を使用できます。

関連する問題