4

Apache Cocoon (2.2) での XSLT 処理に Saxon (9HE) を使用したいと考えています。http://wiki.apache.org/cocoon/Saxonから Saxon を使用するための指示に従いました。これらの手順では、.xconf ファイルを使用するプロセスについて説明します。これは、Cocoon 構成の推奨される方法ではなくなりました ( http://cocoon.apache.org/2.2/core-modules/core/2.2/1259_1_1.htmlで説明されているように)。ただし、そのページには、従来の .xconf 構成が引き続きサポートされていることも記載されています。

(Saxonの手順で説明されているように)、(上記のリンクのCocoon構成ページで説明されているように)、およびでcore.xslt-processor構成を配置しようとしました。いずれの場合も、次のエラーが表示されます。WEB-INF/cocoon.xconfWEB-INF/cocoon/xconf/saxon-xslt.xconfMETA-INF/cocoon/saxon-xslt.xconf

org.apache.avalon.framework.service.ServiceException: Component with  \
'org.apache.excalibur.xml.xslt.XSLTProcessor/saxon' is not defined in \ 
this service manager. (Key='AvalonServiceManager')

に配置saxon9he.jarし、Saxon の説明に従ってWEB-INF/libそのディレクトリを削除しようとしました。META-INFケースごとにサーブレットコンテナー (Jetty) を再起動しました。

私は Java のアマチュアなので、基本的な手順が欠けている可能性は確かにあります。また、私は DSpace システムのコンテキストで Cocoon を使用しているため、DSpace が私の .xconf ファイルを無視するように設定されている可能性があることにも注意してください。

ただし、Spring 構成または .properties ファイルを使用して Saxon プロセッサを指定する方法があるはずですが、オンラインでそれを行うための指示は見つかりませんでした (それらはすべて .xconf 構成プロセスを指定しています)。

何かご意見は?ありがとう!

4

1 に答える 1

3

私自身の質問に答えると--

DSpace用のCocoon XSLTでSaxonを使用する

で xconf ファイルを作成し[dspace-src]/dspace/modules/xmlui/src/main/resources/META-INF/cocoon/avalon/cocoon-core-saxon-xslt.xconf、次の行を追加します。

<?xml version="1.0" encoding="UTF-8"?> <components> <component role="org.apache.excalibur.xml.xslt.XSLTProcessor/saxon" class="org.apache.cocoon.components.xslt.TraxProcessor"> <parameter name="use-store" value="true"/> <parameter name="transformer-factory" value="net.sf.saxon.TransformerFactoryImpl"/> </component> </components>

次の行を追加します[dspace-src]/dspace/modules/xmlui/pom.xml(またはお使いのバージョンの Saxon で変更します)。

<dependency> <groupId>net.sf.saxon</groupId> <artifactId>Saxon-HE</artifactId> <version>9.5.1-4</version> </dependency>

でDSpaceをビルドしmvn packageます。

ant update_webapps(または何でも)でWebアプリケーションを更新しますfresh_install

[dspace]/webapps/xmlui/sitemap.xmap、XSLT トランスフォーマーのxslt-processor-role値をに変更しますsaxon。注: これはビルド プロセスの一部として実行できますが、現在のワークフローの設定方法ではありません。

于 2014-03-24T14:34:15.123 に答える