xslt shbang:从命令行使用 xslt

xslt shbang:从命令行使用 xslt

我(愚蠢地?)写了一些中等通用的xslt 脚本。

我很想将它们转换为可执行文件,从标准或类似文件中读取 xml 文档。

使用其他语言执行此操作的方法是使用什邦

有没有一种简单/标准的方法可以用 xsltproc 和朋友来做到这一点?当然,我可以在 xsltproc 周围编写一个包装器,以去掉第一条注释行……但是如果有一些近似标准的东西,那么使用起来会更好。

答案1

你可以使用通用的binfmt杂项处理运行可执行文件时使用哪个解释器的内核模块。它通常用于允许您运行外部体系结构文件,而无需在它们前面添加qemu或前缀wine,但可用于识别任何魔法文件头中的字符序列,甚至是给定的文件扩展名,例如*.xslt.查看内核文档

例如,如果您有一个demo.xslt以字符开头的文件

<xsl:stylesheet version=...

您可以要求模块识别<xsl:stylesheet文件中偏移量 0 处的字符串,并/usr/bin/xsltproc以 root 身份运行

colon=$(printf '\\x%02x' \':) # \x3a
echo ":myxsltscript:M::<xsl${colon}stylesheet::/usr/bin/xsltproc:" >/etc/binfmt.d/myxslt.conf 
cat /etc/binfmt.d/myxslt.conf >/proc/sys/fs/binfmt_misc/register

您不需要查看该/etc文件,除非您希望在重新启动时保留该设置。如果您没有该/proc文件,则需要先安装它:

mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

现在,如果您chmod +x demo.xslt可以demo.xslt使用任何参数运行,它将使用作为额外的第一个参数提供的xsltproc文件名运行。demo.xslt

要撤消设置,请使用

echo -1 >/proc/sys/fs/binfmt_misc/myxsltscript

答案2

无法使用 shebang 将 XSLT 样式表更改为可执行文件。

相关内容