gpt4 book ai didi

shell - XSLT 可以在操作系统级别执行 shell 脚本吗?

转载 作者:行者123 更新时间:2023-12-02 07:36:43 26 4
gpt4 key购买 nike

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

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

(我知道我可以用 Ant 或 Make 以另一种方式实现预期的结果......但如果不是很费力的话,我宁愿留在 XSLT 中)

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

最佳答案

我也不精通 Java,但我在 Saxonica website 上找到了 Michael Kay 的教程。这是可行的。

这是我所做的以及对我有用的方法:
在 XSLT 样式表的根元素中,我为该函数分配了一个命名空间(在我的例子中,我使用它来解压,所以我将前缀命名为 unzip,但这当然可以是任何东西):

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

我正在定义一个带有文件路径的变量,以便稍后调用批处理文件。然后我正在使用
<xsl:result-document href="{$batchFile}" method="text"> ... </result document> 

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

当我需要执行我的批处理文件时,我会插入一个 xsl:message,如下所示:
<xsl:message>Executing <xsl:value-of select="unzip:exec(unzip:getRuntime(),concat('cmd /c /y start ',$batchFile))"/></xsl:message>

希望有所帮助,
此致,

关于shell - XSLT 可以在操作系统级别执行 shell 脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15504106/

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