Performance 链接XQuery/XSLT转换以提高性能

Performance 链接XQuery/XSLT转换以提高性能,performance,xslt,xquery,saxon,Performance,Xslt,Xquery,Saxon,我已经开发了一些XQuery脚本,我通过Saxon CLI(bat文件)链式调用这些脚本。 我现在的问题是Saxon CLI相当慢(因为Java很慢,而DotNet上的Java更慢) 问题是启动时间需要几秒钟(而不是查询执行本身)。因此,我的想法是避免一次又一次地创建新流程,只使用一个XSLT或XQuery流程加载脚本并执行它们 但是如何在Saxon XSLT中加载和执行XQuery文件呢?有可能吗?当然,为每一步启动一个新的Java虚拟机的命令行脚本不是这样做的 XProc无疑是一个很好的候选

我已经开发了一些XQuery脚本,我通过Saxon CLI(bat文件)链式调用这些脚本。 我现在的问题是Saxon CLI相当慢(因为Java很慢,而DotNet上的Java更慢)

问题是启动时间需要几秒钟(而不是查询执行本身)。因此,我的想法是避免一次又一次地创建新流程,只使用一个XSLT或XQuery流程加载脚本并执行它们


但是如何在Saxon XSLT中加载和执行XQuery文件呢?有可能吗?

当然,为每一步启动一个新的Java虚拟机的命令行脚本不是这样做的

XProc无疑是一个很好的候选人。但我必须承认,我在Ant中仍然做了很多这方面的工作:它很旧,但很有效

还可以从XSLT中控制查询和转换序列(可以使用Saxon扩展函数调用查询,但它需要Saxon PE或更高版本)。我不认为这是首选的方式,但它少了一项需要学习的技术


还有相当多的管道处理器,比如Orbeon。

当然,每个步骤都需要启动一个新的Java虚拟机的命令行脚本不是实现这一点的方法

XProc无疑是一个很好的候选人。但我必须承认,我在Ant中仍然做了很多这方面的工作:它很旧,但很有效

还可以从XSLT中控制查询和转换序列(可以使用Saxon扩展函数调用查询,但它需要Saxon PE或更高版本)。我不认为这是首选的方式,但它少了一项需要学习的技术


还有相当多的管道处理器,如Orbeon。

通常,您可以编写Java或.NET代码,用Saxon 9或10链接XSLT和XQuery的执行。至于从XSLT调用XQuery,我认为该函数仅在EE中可用,另一个选择显然是研究XProc和类似葫芦的实现,它们允许您使用XSLT和XQuery链接步骤。如果您想生活在边缘,您还可以研究MorganaXProc IIIse 0.9.3.7-beta目前支持的XProc 3,该文件已记录在中。XProc 3完全支持XDM 3.1,即XSLT 3和XQuery 3.1的数据模型。它的XML格式也比XProc 1的格式更紧凑,更不冗长。XProc/Calabash听起来真的很有趣。一般来说,您可以编写Java或.NET代码,用Saxon 9或10链接XSLT和XQuery的执行。至于从XSLT调用XQuery,我认为该函数仅在EE中可用,另一个选择显然是研究XProc和类似葫芦的实现,它们允许您使用XSLT和XQuery链接步骤。如果您想生活在边缘,您还可以研究MorganaXProc IIIse 0.9.3.7-beta目前支持的XProc 3,该文件已记录在中。XProc 3完全支持XDM 3.1,即XSLT 3和XQuery 3.1的数据模型。它的XML格式也比XProc 1的格式更紧凑,更不冗长。XProc/Calabash听起来很有趣