很早很久以前写过一篇 在 xslt 调用 java 方法的日志 XSLT 调用 Java 的类方法, 其中介绍是使用 org.apache.xalan.processor.TransformerFactoryImpl 实现的例子,JDK 本身就是用这个的。但是在 Tomcat 环境下,它有它自己的 XSLT 默认实现是 net.sf.saxon.TransformerFactoryImpl,这时候 XSLT 中的内容略有不同,而且显示更简便一些。
这么说吧, xalan 支持以下两种调用 java 方法的方式,而 saxon 只认得第二种
1. 声明到包,调用时带上类名
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="cc.unmi.commons" exclude-result-prefixes="java"> <xsl:output method="xml"/> <xsl:template match="user/name"> <li><xsl:value-of select='java:XsltFunctions.replace(.)'/></li> </xsl:template> </xsl:stylesheet> |