2011-11-28 50 views
2

我有我自己的Java静态函数的类:我的Java功能结合到撒克逊XSLT处理器

package com.test; 

public class A { 

    public static void returnSameNodes(Object nodes){ 
     return nodes; 
    } 


} 

我想这个功能绑定到XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:ext="java:com.test.A" > 
    <xsl:template match="root"> 
     <xsl:apply-templates select="ext:returnSameNodes(//child::*)"></xsl:apply-templates> 
    </xsl:template> 
</xsl:stylesheet> 

,但有以下错误:

Cannot find a matching 1-argument function named etc.

我知道我做错了 - 我要告诉撒克逊(9B),我的班是在特定的位置,但我不”不知道该怎么做。有什么建议么??包括例如Math.sqrt()很好。谢谢

编辑:问题是设置Java类路径,任何人都知道如何做这个特殊情况?在下面的链接中有关于设置类路径变量的注释,但是如何? http://www.saxonica.com/documentation/extensibility/functions.xml 感谢您的建议

+0

哇!让我想一想 – jsalonen

+0

您能否提供一些关于如何为Java中的XSLT编写自定义函数的详细信息(API参考等)?在撒克逊我从未听说过这种可能性。 – jsalonen

+0

好的!帮助真的很感谢 – MartinM

回答

1

如果你在命令行中运行,那么

(一)使用-TJ选项以获得更好的诊断上的问题,扩展功能

(B)确保包含您的方法是在类路径,例如

的java -cp mycode的类; saxon9ee.jar net.sf.saxon.Transform -TJ -xsl:xxx.xsl -s:yyy.xml

其中mycode是包含您的编译类的目录

(c)确保您使用的是支持自反扩展功能的撒克逊版本(Saxon-HE不)。

+0

谢谢你的帮助,效果很好 – MartinM