2015-04-07 115 views
1

我使用fop将xml转换为pdf,因此为此我写了一个xslt代码。 在同一个xslt中,我使用了java代码,但不知何故,我得到一个错误,指出nosuchmethodexception:找不到方法org.apache.xml.utils.NodeVector.input([ExpressionContext,])。从使用fop的xslt调用java方法时遇到问题

但我的java代码是一个用户定义的代码,它是在不同的包中。

我的xml有local_curr属性。

我的java类名是XMLData。 包是com.pdf Java方法是输入它接受一个字符串值,然后返回一个字符串

XSLT代码:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" 
    xmlns:java="com.pdf.XMLData"> 


    <xsl:output method="xml" indent="yes" /> 
    <xsl:template match="/"> 

     <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
      <!-- Defining Page Layout --> 
      <fo:layout-master-set> 
       <fo:simple-page-master master-name="A3-portrait" 
        page-height="29.7cm" page-width="40.0cm" margin="2cm"> 
        <fo:region-body margin-bottom="20mm" /> 

       </fo:simple-page-master> 
      </fo:layout-master-set> 
      <fo:page-sequence master-reference="A3-portrait"> 

       <fo:flow flow-name="xsl-region-body"> 

        <fo:table table-layout="fixed" width="100%" border-width="1mm" 
         border-collapse="separate"> 
          <fo:table-row> 
            <fo:table-cell background-color="#F79F81" 
               border-width="0.1mm" border-style="solid"> 
               <fo:block wrap-option="wrap" font-size="15pt" 
                padding="5pt" text-align="right"> 

                <xsl:value-of select="java:input(@local_curr)" /> 
               </fo:block> 
              </fo:table-cell> 
                          </fo:table-row> 
               </fo:table> 
               </fo:flow> 
               </fo:page-sequence> 
               </fo:root> 
               </xsl:template> 
                          </xsl:stylesheet> 
+0

是否使用'的'改善的事情? –

回答

0

的问题是,@local_curr可能不回你的Java方法需要的类型。

你需要分析它例如作为字符串

<xsl:value-of select="java:input(string(@local_curr))" /> 

或者多项

<xsl:value-of select="java:input(number(@local_curr))" /> 

NoSuchMethodException被抛出,因为没有方法与给定类型作为参数找到。

0

感谢您的帮助。 已解决。其实我必须添加我的jar文件在fop的批处理文件中解决了我的问题。

谢谢...