【发布时间】:2016-03-13 00:45:13
【问题描述】:
元
- Saxon XSLT 处理器 (v. 9.1.8)
- Java
- XSLT 2.0
我得到了一个 java 类文件和一些 xsl 转换的简单示例。我的目标是从 XSLT 进程中的类文件(通过 SAXON)运行我的自定义 java 函数。 这怎么可能? 当我启动下面描述的批处理文件时,cmd 显示一个错误,调用我这个函数是 saxon 不知道的。所以我必须将我的类添加到 Java / 或 Saxon CLASSPATH?
转换应该复制所有 XML 数据并(返回 &)显示图像文件的维度。
我的 XSL 转换
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ImageInfo="java:ImageInfo"
version="2.0">
<xsl:output method="xml"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
<xsl:template/>
<xsl:template match="img">
<xsl:copy>
[image] file found: <xsl:value-of select="ImageInfo:getImageWidth(@src)"/> x <xsl:value-of select="ImageInfo:getImageHeight(@src)"/>
</xsl:copy>
</xsl:template>
Java 类
import javax.swing.ImageIcon;
public class ImageInfo {
String filename;
ImageIcon img;
public ImageInfo(String filename) {
this.filename = filename;
img = new ImageIcon(filename);
}
public int getWidth() {
return img.getIconWidth();
}
public int getHeight() {
return img.getIconHeight();
}
}
Saxon 命令行调用(通过 .BAT)
java -jar "%~dp0\saxonb9-1-0-8j\saxon9.jar" -s:"data.xml" -xsl:"transformation.xsl" -o:"result.xml"
【问题讨论】:
-
我知道这个问题很老了,但我仍然希望得到答案——我需要在哪里放置自定义 java 扩展类以便 xsl 可以找到它们?
标签: java xml batch-file xslt saxon