了解 SLAX 处理器 (slaxproc)
slaxproc 概述
libslax发行版包含libslax库,其中包含SLAX编写器和SLAX解析器,调试器,探查器和SLAX处理器(slaxproc)。SLAX 处理器是一个命令行工具,可以验证 SLAX 脚本语法,在 SLAX 和 XSLT 格式之间进行转换,以及格式化、调试或运行 SLAX 脚本。
SLAX 处理器使用命令在 slaxproc
命令行上调用。该 slaxproc
命令接受命令行参数,这些参数指定处理器的模式、任何行为选项以及所需的输入和输出文件。
命令 slaxproc
的语法为:
slaxproc [mode] [options] [script] [files]
slaxproc 模式定义处理器执行的功能。SLAXPROC 选项包括文件选项和常用选项。文件选项用于指定脚本文件、输入文件、输出文件和跟踪文件。常见选项包括 SLAX 处理器提供的其他功能,如详细调试输出。
您可以通过发出带有或-h
选项的--help
命令来slaxproc
访问 slaxproc 帮助。
$ slaxproc -h
有关 SLAX 处理器的详细信息,请参阅 slaxproc:SLAX 处理器。
斜线模式
slaxproc 模式定义处理器执行的功能。默认模式为 --run
或 -r
。如果未显式指定模式,SLAX 处理器将执行脚本。 表 1 概述了 slaxproc 模式及其功能。
模式 |
描述 |
---|---|
|
对 SLAX 脚本执行语法和内容检查,报告任何错误。此模式可用于在将脚本安装或上传到运行 Junos OS 的设备之前进行异机语法检查。 |
|
设置 SLAX 脚本的格式,将缩进和间距更正为首选样式。 |
|
使用 http://juniper.github.io/libslax/slax-manual.html#json-elements 中定义的约定将 JSON 输入转换为 XML。 |
|
运行 SLAX 脚本。这是默认模式。脚本名称、输入文件名和输出文件名可以使用命令行选项、位置参数或两者的组合来提供。输入默认为标准输入,输出默认为标准输出。 |
|
显示输入文档中的 XPath 选择。此模式用于从脚本中提取选择以供外部使用。这使使用者能够避免使用 SLAX 解析器,但仍可以看到脚本的内容。 |
|
显示全局变量的内容。此模式用于提取静态变量内容以供外部使用。这使数据的使用者能够避开 SLAX 解析器,但仍可以访问全局变量(如 |
|
将 SLAX 脚本转换为 XSLT 格式。脚本文件名和输出文件名是使用命令行选项、位置参数或两者的混合提供的。 |
|
使用 http://juniper.github.io/libslax/slax-manual.html#json-elements 中定义的约定将 XML 转换为 JSON。 |
|
从输入文档中选择与给定 XPath 表达式匹配的数据。 |
|
将 XSLT 脚本转换为 SLAX 格式。脚本文件名和输出文件名是使用命令行选项、位置参数或两者的混合提供的。 |
斜线选项
slaxproc 选项包括文件选项和常用选项。使用文件选项指定脚本文件、输入文件、输出文件和跟踪文件。常见选项包括 SLAX 处理器提供的附加功能和选项,如详细调试输出。 表 2 列出了 slaxproc 常用选项和文件选项。
选项 |
描述 |
---|---|
|
启用 SLAX/XSLT 调试器。 |
|
提供一个空文档作为输入数据集。这对于不需要或不需要有意义输入的脚本很有用。 |
|
将 SLAX 表达式转换为 XPATH 表达式,反之亦然,具体取决于是否存在 --slax-to-xslt 或 --xslt-to-slax。 |
|
启用 EXSLT 库,该库提供一组标准扩展函数。有关详细信息,请参阅 http://www.exslt.org 。 |
|
显示帮助消息并退出。 |
|
使用 HTML 解析器分析输入数据,它不同于 XML。 |
|
不要处理任何进一步的参数。这可以与启用 |
|
将目录添加到使用包含和导入文件时搜索的目录列表中。或者,您可以定义 SLAXPATH 环境变量以指定要搜索的以冒号分隔的目录列表。 |
|
缩进输出。此选项与 触发 |
|
从指定文件读取输入。 |
|
使用“json”属性标记 JSON 元素,因为输入将转换为 XML。这使您能够使用该 |
|
从微型模板生成脚本时,请勿添加模板以丢弃普通文本。默认情况下,XSLT 显示不匹配的文本数据。此选项将保留默认行为,而不是将其替换为放弃操作。 |
|
将目录添加到使用扩展库时搜索的目录列表中。 或者,您可以定义 SLAXEXTPATH 环境变量,以指定要搜索的扩展库位置的冒号分隔列表。 |
|
将日志数据写入给定文件。 |
|
通过命令行传递一个简单的脚本。参数通常是模板,例如命名模板或匹配模板。 |
|
从指定文件中读取 SLAX 脚本。 |
|
使用 slaxproc 模式 |
|
不要初始化随机数生成器。如果您希望脚本为一系列调用返回相同的数据,这将非常有用。此选项通常仅在测试期间使用。 |
|
不要将 tty 用于 SLAX 调试器和其他与 tty 相关的输入需求。 |
|
将输出写入指定的文件。 |
|
使用提供的名称和值对将参数传递给脚本。所有参数都是字符串参数,因此适用正常的引用规则。 |
|
允许输入数据包含部分 SLAX 脚本,该脚本可与或 |
|
使用 SLAX 样式的 XML 写入结果。 |
|
将跟踪数据写入指定的文件。 |
|
将详细的内部调试输出添加到跟踪数据输出,包括对函数的 |
|
显示版本信息并退出。 |
|
使用 or 此选项可用于将转换限制为仅使用某些版本的 SLAX 中的功能。可接受的值为 1.0、1.1、1.2。如果未指定此选项,则 SLAX 脚本版本默认为最新版本。 |
slaxproc 文件参数处理
对于除 以外的 check
所有模式,您可以选择按位置引用文件参数,也可以使用文件选项指定输入和输出文件。如果使用文件选项,则可以在命令行上按任意顺序引用文件,并且可以在其他命令行选项中穿插文件选项。
如果不需要输入文件, -E
请使用该选项指示空输入文档。此外,如果输入或输出选项参数的值为“-”,则使用标准输入或标准输出文件。使用标准输入时,按 Ctrl+d 表示文件结束。
要在命令行上位置引用文件,请先指定脚本文件(如果该模式需要),然后指定输入文件,最后指定输出文件。在位置上引用文件允许slaxproc与xsltproc插头兼容。
$ slaxproc script.slax input.xml output.xml
要使用显式文件选项值引用文件,请分别包括 --name
或 、 或 、 -i
--input
和 -o
--output
或 -n
以指定 SLAX 脚本文件以及输入和输出文件。
$ slaxproc -i input.xml -n script.slax -o output.xml
如果未提供文件选项,则按位置分析文件名。在以下命令中,输入和输出文件名是使用文件选项指定的,但脚本文件名是按位置引用的:
$ slaxproc -i input.xml -o output.xml -g -v script.slax
要执行不需要输入文件的脚本,请包含 -E
指示空输入文档的选项。
$ slaxproc -E script.slax output.xml
slaxproc UNIX 脚本支持
SLAX 支持 shebang 构造 (#!),允许脚本的第一行以字符“#”和“!”开头,后跟运行脚本的可执行文件的路径和一组命令行参数。例如:
#!/usr/bin/slaxproc -n or #!/opt/local/bin/slaxproc -n
操作系统将脚本的名称和任何命令行参数添加到“#!”后面的命令行中。添加该 ‑n
选项允许在命令行上传入其他参数。灵活的参数解析允许使用别名。例如,如果脚本的第一行是:
#!/usr/bin/slaxproc -E -n
可以提供其他参数:
$ that-script -g output.xml
生成的命令将变为:
/usr/bin/slaxproc -E -n /path/to/that-script -g output.xml
如果输入或输出参数的值为“-”,则使用标准输入或标准输出文件。这使得slaxproc可以用作传统的UNIX过滤器。