gpt4 book ai didi

java - 使用 Groovy 扩展 XSLT

转载 作者:行者123 更新时间:2023-12-04 06:06:30 24 4
gpt4 key购买 nike

XSL:

<xsl:template match="int" 
xmlns:fib="java:FibonacciNumber">
<int>
<xsl:value-of select="fib:calculate(number(.))"/>
</int>
</xsl:template>

常规:
    import java.math.BigInteger
import javax.xml.transform.TransformerFactory
import javax.xml.transform.stream.StreamResult
import javax.xml.transform.stream.StreamSource
import javax.xml.transform.Templates


class FibonacciNumber {
def calculate(int n) {
if (n <= 0) {
throw new IllegalArgumentException(
"Fibonacci numbers are only defined for positive integers"
)
}
BigInteger low = BigInteger.ONE
BigInteger high = BigInteger.ONE
for (int i = 3; i <= n; i++) {
BigInteger temp = high
high = high.add(low)
low = temp
}
return high
}
}
def fibo = new FibonacciNumber()
def factory = TransformerFactory.newInstance()
def StreamSource xsource = new StreamSource(new File("validPathToXSL.xsl"))
def Templates template = factory.newTemplates(xsource)
def transformer = template.newTransformer()

transformer.setParameter("fib",fibo)

transformer.transform(
new StreamSource(
new File("validPathToXmlFile.xml")),
new StreamResult(System.out)
)

每次我运行基于 groovy 的转换时(来自 groovyConsole)
Groovy 正在提示 找不到类 FibonacciNumber
我试图打印 this.class.getName() 和
打印 this.class.getPackage() 并且我只得到名称和 对于每个
获取包。

你将如何在你的 xslt 中引用 FibonacciNumber groovy 类来使用它的
xsl 转换中的方法?


谢谢

最佳答案

这是它的解决方法:

而不是从 groovyConsole 调用脚本,只需将所有内容捆绑到一个包含上述代码的 groovy 脚本中,然后使用命令行中的主 groovy 解释器执行它。
这是我在 groovyconsole 之外运行脚本所做的唯一更改,解决了类路径引用问题。

关于java - 使用 Groovy 扩展 XSLT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8295362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com