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脚本吗?的主要内容,如果未能解决你的问题,请参考以下文章