0
저는 C# 코드에서 IKVM과 함께 Apache FOP를 사용하고 있습니다. xslt 스타일 시트를 사용하여 xsl fo와 같은 결과를 얻는 방법으로 pdf 파일을 생성합니다. 하나의 문제, 즉 사용자 정의 함수를 사용하고 있습니다. 내 스타일 선언 :xall에 대한 xalan 및 사용자 정의 함수
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:cal="xalan://m.test"
extension-element-prefixes="cal"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema-instance http://www.xmlblueprint.com/documents/fop.xsd">
사용자 정의 기능 :
namespace m
{
public class test
{
public static string zzz(ExpressionContext x, object d)
{
return "test";
}
}
}
그리고 XSLT에서이 전화 :
<xsl:value-of select="cal:zzz(1)"/>
코드하는 컴파일하기 :
FopFactory fopFactory = FopFactory.newInstance();
fopFactory.ignoreNamespace("http://www.w3.org/2001/XMLSchema-instance");
fopFactory.setUserConfig(new File("fop.xconf"));
OutputStream o = new DotNetOutputMemoryStream();
try
{
Fop fop = fopFactory.newFop("application/pdf", o);
TransformerFactory factory = TransformerFactory.newInstance();
Source xsltSrc = new StreamSource(new File("data.xsl"));
Transformer transformer = factory.newTransformer(xsltSrc);
var bytes = System.IO.File.ReadAllBytes("data.xml"); //"HR_CV.fo");
var stream = new DotNetInputMemoryStream(new System.IO.MemoryStream(bytes));
Source src = new StreamSource(stream);
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res);
}
finally
{
o.close();
}
Exceptio n got : java.lang.NoSychMethodExtension : 확장 기능을 위해 메소드 org.apache.xml.utils.NodeVector.zzz ([ExpressionContext,])를 찾을 수 없습니다.
내가 잘못하고있는 것은 무엇입니까?