1

いくつかのテストを試み、解決策を検索しましたが、何も見つかりません。XSLT で Java 関数を呼び出す必要があります。私の最後の解決策は、次のとおりです。クラスを次のように宣言します

シャラン:

    <xsl:stylesheet version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xalan="http://xml.apache.org/xalan"
    xmlns:printAnno="StampaAnnoUtil"
    extension-element-prefixes="printAnno">

<xalan:component prefix="printAnno"
        elements="isStampaAnno" functions="isStampaAnno">
        <xalan:script lang="javaclass" src="java:it.dpe.common.util.StampaAnnoUtil"/>
    </xalan:component>

私は自分の関数を呼び出します:

<xsl:value-of select="printAnno:isStampaAnno()"/>

Oxygen エディターで直接エラーが発生し、レポートをコンパイルしようとすると、次のようになります。

fo:page-sequence に子要素がありません。

F {printAnno:isStampaAnno()} の 652 行目の char 24 にある XPath 構文エラー: {StampaAnnoUtil}isStampaAnno() という名前の一致する引数なしの関数が見つかりません。

障害はどこにありますか?XSLl は DB にありますが、変換すると自分のパスにあります。

4

1 に答える 1

0

おそらく、jar ファイルを Oxygen に登録するのを忘れただけでしょう。関数の実装は、関数に認識されている必要があります。投稿したような定義は接着剤のように機能しますが、接着したいものを提供する必要があります。次のことを試してください(または同様のもの、Oxygenを使用してから何年も経ちます):

  • ツールバーから [検証シナリオの構成] ボタンをクリックします。
  • [カスタム検証シナリオを使用する] ボックスをオンにします。
  • [新規] ボタンをクリックして、新しいシナリオを作成します。
  • 「追加」ボタンをクリック
  • Xalan などのプロセッサを指定するために「エンジンの種類」を選択します
  • 拡張機能ボタンをクリックします
  • [追加] をクリックしてから、jar ファイルを参照します。
  • すべてのダイアログで「OK」をクリックします

ソース

于 2013-01-22T12:28:50.160 に答える