gpt4 book ai didi

java - 在 XSLT 和 SAXON 中运行自定义 Java 函数 (9.1.8)

转载 作者:行者123 更新时间:2023-11-30 03:08:36 25 4
gpt4 key购买 nike

  • Saxon XSLT 处理器(v. 9.1.8)
  • Java
  • XSLT 2.0

我得到了一个 java 类文件和一些 xsl 转换的简单示例。我的目标是从 XSLT 进程中的类文件运行我的自定义 java 函数(通过 SAXON)。 这怎么可能?当我启动下面描述的批处理文件时,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"

最佳答案

您需要 -cp您的选项java命令例如java -cp ".;%~dp0\saxonb9-1-0-8j\saxon9.jar" net.sf.saxon.Transform -s:"data.xml" -xsl:"transformation.xsl" -o:"result.xml"您需要确保目录包含 ImageInfo在类路径上,我添加了 . ,假设该类位于您当前的工作目录中。

但是请注意 ImageInfo:getImageWidth(@src)会尝试调用静态方法getImageWidth ,您有实例方法,您拥有的方法称为 getWidth并且它不需要参数。

请参阅旧版本 Saxon 9 的文档,它应该可以在 http://saxon.sourceforge.net/ 上找到。 .

关于java - 在 XSLT 和 SAXON 中运行自定义 Java 函数 (9.1.8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34150099/

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