在Perl中使用Saxon/C

在Perl中使用Saxon/C,perl,saxon,saxon-c,Perl,Saxon,Saxon C,Saxon网站说可以从Perl调用Saxon/C,但我找不到任何示例。我唯一发现的Saxon接口是一个旧的Perl模块(XML::Saxon::XSLT2),它使用内联::Java,显然速度非常慢。但是我找不到任何使用Saxon/C的工具。有没有人在这方面取得过成功,可以分享一些技巧?我们还没有正式完成在perl上扩展Saxon/C所需的集成工作,它仍然在我们的待办事项列表中。因此,我们目前不支持它。我不知道有谁做过这项工作,但我知道这是可以做到的 在Saxon网站上,我们声明可以用Perl等语

Saxon网站说可以从Perl调用Saxon/C,但我找不到任何示例。我唯一发现的Saxon接口是一个旧的Perl模块(XML::Saxon::XSLT2),它使用内联::Java,显然速度非常慢。但是我找不到任何使用Saxon/C的工具。有没有人在这方面取得过成功,可以分享一些技巧?

我们还没有正式完成在perl上扩展Saxon/C所需的集成工作,它仍然在我们的待办事项列表中。因此,我们目前不支持它。我不知道有谁做过这项工作,但我知道这是可以做到的

在Saxon网站上,我们声明可以用Perl等语言创建扩展,因为Saxon/C有一个C/C++接口。目前,我们只有PHP和Python的扩展(在下一版本中提供)


作为一种解决方法,您可以使用Perl中的exec函数而不是Java版本从Saxon/C运行transform命令,因此无需运行Java-VM。

另请参见和。如果模块提供的C绑定不够,您也可以使用编写自己的绑定,例如,或感谢您的建议。但我需要的是Saxon(兼容3.1),而不是LibXSLT。我不是第一个想将Saxon与Perl结合使用的人,所以一定有人以前做过。Saxon/C页面甚至明确表示可以从Perl调用它。我不想在这里创建新的东西,只是像其他人那样使用Saxon和Perl。那么,其他人如何将Saxon与Perl结合使用呢?啊,这解释了Saxon网站上的说法。谢谢你的澄清。你能告诉我更多的解决方法吗?我目前通过文件句柄open(Saxon,| java-jar saxon9he.jar-s:--xsl:my.xsl-o:output.xml)运行Saxon,只是为了方便将xml输入打印到STDIN;这应该相当于以XML文件作为输入的exec。从Saxon/C运行transform命令,避免运行javavm,会是什么样子?我按照自述文件中的安装说明进行安装,然后遇到了问题。请详细说明您遇到了什么问题?Transform.c、Query.c和Validate.c文件在Saxon-/c install目录“command”中提供。bashshell构建脚本也应该位于同一目录中,以编译和创建可执行文件。可执行文件将以与Java对应文件类似的方式运行(可以使用相同的选项)。似乎缺少一些头,但没有看到有关如何获取MacOS
sh-3.2#/buildpec-command.sh-I../Saxon.C.API/jni Transform.C:13:14头的说明:致命错误:“未找到windows.h”文件#include
这是一个错误。缺少Apple预处理器指令。请参阅错误问题:我已经修复了它并添加了解决方法,只需将文件替换为错误问题中的文件即可。i、 e.Transform.c:正在进行,但现在出现了新错误:
sh-3.2#/buildpec-command.sh-i../Saxon.c.API/jni Transform.c:15:13:错误:无法与以前的“int”声明说明符typedef int bool结合使用;^/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xToolchain/usr/lib/clang/10.0.1/include/stdbool.h:31:14:注意:从宏“bool”转换展开。c:15:1:警告:typedef需要名称[-Wmissing声明]转换。c:217:9:警告:格式字符串不是字符串文字(可能不安全)Transform.c:217:9:注意:将字符串视为参数以避免出现这种情况