2013-01-22 40 views
1

我嘗試了幾個測試,我搜索任何解決方案,但我找不到任何東西。 我必須在XSLT中調用我的Java函數。我最後的解決辦法,我認爲是最好的下面,我宣佈我的類Xalan調用用戶Java功能

的Xalan:

<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()"/> 

和我直接得到一個錯誤在我的氧氣編輯器中,如果我嘗試編譯我得到的報告:

fo:page-sequence缺少子元素。

F在{printAnno:isStampaAnno()}行652的char 24上的XPath語法錯誤: 無法找到名爲{StampaAnnoUtil} isStampaAnno()的匹配0參數函數。

故障在哪裏? XSLl在數據庫中,但是當我轉換它時,它就在我的路徑中。

+0

你用氧作爲XSLT處理器擴展註冊您的jar文件? – predi

回答

0

你可能只是忘了用Oxygen註冊你的jar文件。必須知道你的功能的實現。像你發佈的定義一樣定義爲膠水,但你仍然需要提供你想粘在一起的東西。請嘗試以下(或類似的東西,它已經,因爲我用的氧氣年齡):

  • 單擊「配置驗證方案」按鈕從工具欄
  • 選中「使用自定義驗證方案」框
  • 點擊「新建」按鈕打開「添加」按鈕
  • 選擇「引擎鍵入」創建新方案
  • 點擊指定的處理器,Xalan的例如
  • 點擊擴展按鈕
  • 點擊「添加」,然後瀏覽您的jar文件
  • 單擊「確定」上的所有對話框

Source