XSLT可以在OS级别执行shell脚本吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSLT可以在OS级别执行shell脚本吗?相关的知识,希望对你有一定的参考价值。

我有一个生产流程,它在完成之前在大约4个步骤中结合了XSLT和一些shell脚本。我现在手动执行每个步骤。

我在Linux中使用命令行中的Saxon 9。我可以使用xsl的执行shell脚本而不是我吗?

(我知道我可以通过Ant或Make以另一种方式实现所需的结果..但是如果不是这么做的话,我宁愿留在XSLT中)

更新:我已经使用Xproc最小化了我的shell脚本并加快了速度。我对结果并不完全满意,但Xproc改善了生活。 Kai的建议看起来不错......但我还没有尝试过。

答案

您可以像调用任何其他外部Java函数一样调用java.lang.Runtime.exec()。

另一答案

我也不是Java精明,但我发现Michael Kay的关于Saxonica website的教程是可行的。

这是我做的以及对我有用的东西:在XSLT样式表的根元素中,我为该函数指定了一个命名空间(在我的情况下,我用它来解压缩,所以我将前缀命名为unzip,但这肯定是任何东西):

xmlns:unzip="java:java.lang.Runtime"

我正在定义一个带有文件路径的变量,以便稍后调用批处理文件。然后我正在使用

<xsl:result-document href="{$batchFile}" method="text"> ... </result document> 

创建批处理文件。 (解压缩当然只需要一个命令,但我发现批处理文件版本更方便,因为我需要将unzip-command与一些更改目录命令和其他一些小东西结合起来。而且使用批处理文件打开了一个世界可以从XSLT表调用更复杂的任务。)

当我需要执行批处理文件时,我插入一个xsl:消息,如下所示:

<xsl:message>Executing <xsl:value-of select="unzip:exec(unzip:getRuntime(),concat('cmd /c /y start ',$batchFile))"/></xsl:message>

希望有所帮助,最好的问候,凯

以上是关于XSLT可以在OS级别执行shell脚本吗?的主要内容,如果未能解决你的问题,请参考以下文章

从 OS X Dock 执行 Shell 脚本?

shell脚本

lua调用shell 脚本

C语言能否用在shell脚本

我们可以使用 gsutil 命令执行 shell 脚本吗

shell获取时间精确到毫秒级别是哪个命令