Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解 SLAX 处理器 (slaxproc)

slaxproc 概述

libslax发行版包含libslax库,其中包含SLAX编写器和SLAX解析器,调试器,探查器和SLAX处理器(slaxproc)。SLAX 处理器是一个命令行工具,可以验证 SLAX 脚本语法,在 SLAX 和 XSLT 格式之间进行转换,以及格式化、调试或运行 SLAX 脚本。

SLAX 处理器使用命令在 slaxproc 命令行上调用。该 slaxproc 命令接受命令行参数,这些参数指定处理器的模式、任何行为选项以及所需的输入和输出文件。

命令 slaxproc 的语法为:

slaxproc 模式定义处理器执行的功能。SLAXPROC 选项包括文件选项和常用选项。文件选项用于指定脚本文件、输入文件、输出文件和跟踪文件。常见选项包括 SLAX 处理器提供的其他功能,如详细调试输出。

您可以通过发出带有或-h选项的--help命令来slaxproc访问 slaxproc 帮助。

有关 SLAX 处理器的详细信息,请参阅 slaxproc:SLAX 处理器

斜线模式

slaxproc 模式定义处理器执行的功能。默认模式为 --run-r。如果未显式指定模式,SLAX 处理器将执行脚本。 表 1 概述了 slaxproc 模式及其功能。

表 1:斜杠模式

模式

描述

--‍check
 -c

对 SLAX 脚本执行语法和内容检查,报告任何错误。此模式可用于在将脚本安装或上传到运行 Junos OS 的设备之前进行异机语法检查。

--‍format
 -F

设置 SLAX 脚本的格式,将缩进和间距更正为首选样式。

--‍json-‍to-‍xml

使用 http://juniper.github.io/libslax/slax-manual.html#json-elements 中定义的约定将 JSON 输入转换为 XML。

--‍run
 -r

运行 SLAX 脚本。这是默认模式。脚本名称、输入文件名和输出文件名可以使用命令行选项、位置参数或两者的组合来提供。输入默认为标准输入,输出默认为标准输出。

--‍show-‍select

显示输入文档中的 XPath 选择。此模式用于从脚本中提取选择以供外部使用。这使使用者能够避免使用 SLAX 解析器,但仍可以看到脚本的内容。

--show-‍variable

显示全局变量的内容。此模式用于提取静态变量内容以供外部使用。这使数据的使用者能够避开 SLAX 解析器,但仍可以访问全局变量(如 $arguments 变量)的静态内容。

--‍slax-‍to-‍xslt
 -x

将 SLAX 脚本转换为 XSLT 格式。脚本文件名和输出文件名是使用命令行选项、位置参数或两者的混合提供的。

--‍xml-‍to-‍json

使用 http://juniper.github.io/libslax/slax-manual.html#json-elements 中定义的约定将 XML 转换为 JSON。

--‍xpath xpath
 -X xpath

从输入文档中选择与给定 XPath 表达式匹配的数据。

--‍xslt-‍to-‍slax
 -s

将 XSLT 脚本转换为 SLAX 格式。脚本文件名和输出文件名是使用命令行选项、位置参数或两者的混合提供的。

斜线选项

slaxproc 选项包括文件选项和常用选项。使用文件选项指定脚本文件、输入文件、输出文件和跟踪文件。常见选项包括 SLAX 处理器提供的附加功能和选项,如详细调试输出。 表 2 列出了 slaxproc 常用选项和文件选项。

表 2: slaxproc 通用选项和文件选项

选项

描述

--‍debug
 -d

启用 SLAX/XSLT 调试器。

--‍empty
 -E

提供一个空文档作为输入数据集。这对于不需要或不需要有意义输入的脚本很有用。

--‍expression <expr>

将 SLAX 表达式转换为 XPATH 表达式,反之亦然,具体取决于是否存在 --slax-to-xslt 或 --xslt-to-slax。

--‍exslt
 -e

启用 EXSLT 库,该库提供一组标准扩展函数。有关详细信息,请参阅 http://www.exslt.org

--‍help
 -h

显示帮助消息并退出。

--‍html
 -H

使用 HTML 解析器分析输入数据,它不同于 XML。

--‍ignore-‍arguments

不要处理任何进一步的参数。这可以与启用 #! 不同样式的参数解析。

--‍include <dir>
 -I <dir>

将目录添加到使用包含和导入文件时搜索的目录列表中。或者,您可以定义 SLAXPATH 环境变量以指定要搜索的以冒号分隔的目录列表。

--‍indent
 -g

缩进输出。此选项与 触发 output-method { indent 'true'; }的行为相同。

--‍input <file>
 -i <file>

从指定文件读取输入。

--‍json-‍tagging

使用“json”属性标记 JSON 元素,因为输入将转换为 XML。这使您能够使用该 --format 模式将数据转换回 JSON 格式。

--‍keep-‍text

从微型模板生成脚本时,请勿添加模板以丢弃普通文本。默认情况下,XSLT 显示不匹配的文本数据。此选项将保留默认行为,而不是将其替换为放弃操作。

--‍lib <dir>
 -L <dir>

将目录添加到使用扩展库时搜索的目录列表中。

或者,您可以定义 SLAXEXTPATH 环境变量,以指定要搜索的扩展库位置的冒号分隔列表。

--‍log <file>

将日志数据写入给定文件。

--‍mini-‍template <code>
 -m <code>

通过命令行传递一个简单的脚本。参数通常是模板,例如命名模板或匹配模板。

--‍name <file>
 -n <file>

从指定文件中读取 SLAX 脚本。

--‍no-‍json-‍types <dir>

使用 slaxproc 模式--json-‍to-‍xml将 JSON 输入转换为 XML 时省略type属性。

--‍no-‍randomize

不要初始化随机数生成器。如果您希望脚本为一系列调用返回相同的数据,这将非常有用。此选项通常仅在测试期间使用。

--‍no-‍tty

不要将 tty 用于 SLAX 调试器和其他与 tty 相关的输入需求。

--‍output <file>
 -o <file>

将输出写入指定的文件。

--‍param <name> <value>
 -a <name> <value>

使用提供的名称和值对将参数传递给脚本。所有参数都是字符串参数,因此适用正常的引用规则。

--‍partial
 -p

允许输入数据包含部分 SLAX 脚本,该脚本可与或-x模式一起使用‑‑slax‑to‑xslt以执行部分转换。

--‍slax-‍output
 -S

使用 SLAX 样式的 XML 写入结果。

--‍trace <file>
 -t <file>

将跟踪数据写入指定的文件。

--‍verbose
 -v

将详细的内部调试输出添加到跟踪数据输出,包括对函数的 slaxLog() 调用。

--‍version
 -V

显示版本信息并退出。

--write-‍version <version>
 -w <version>

使用 or --xslt-‍to-‍slax -s 模式转换脚本时,将指定的版本号写入输出文件。

此选项可用于将转换限制为仅使用某些版本的 SLAX 中的功能。可接受的值为 1.0、1.1、1.2。如果未指定此选项,则 SLAX 脚本版本默认为最新版本。

slaxproc 文件参数处理

对于除 以外的 check所有模式,您可以选择按位置引用文件参数,也可以使用文件选项指定输入和输出文件。如果使用文件选项,则可以在命令行上按任意顺序引用文件,并且可以在其他命令行选项中穿插文件选项。

如果不需要输入文件, -E 请使用该选项指示空输入文档。此外,如果输入或输出选项参数的值为“-”,则使用标准输入或标准输出文件。使用标准输入时,按 Ctrl+d 表示文件结束。

要在命令行上位置引用文件,请先指定脚本文件(如果该模式需要),然后指定输入文件,最后指定输出文件。在位置上引用文件允许slaxproc与xsltproc插头兼容。

要使用显式文件选项值引用文件,请分别包括 --name 或 、 或 、 -i--input-o--output-n以指定 SLAX 脚本文件以及输入和输出文件。

如果未提供文件选项,则按位置分析文件名。在以下命令中,输入和输出文件名是使用文件选项指定的,但脚本文件名是按位置引用的:

要执行不需要输入文件的脚本,请包含 -E 指示空输入文档的选项。

slaxproc UNIX 脚本支持

SLAX 支持 shebang 构造 (#!),允许脚本的第一行以字符“#”和“!”开头,后跟运行脚本的可执行文件的路径和一组命令行参数。例如:

操作系统将脚本的名称和任何命令行参数添加到“#!”后面的命令行中。添加该 ‑n 选项允许在命令行上传入其他参数。灵活的参数解析允许使用别名。例如,如果脚本的第一行是:

可以提供其他参数:

生成的命令将变为:

如果输入或输出参数的值为“-”,则使用标准输入或标准输出文件。这使得slaxproc可以用作传统的UNIX过滤器。