如何使用 SLAX 处理器 (slaxproc)
SLAX 处理器 (slaxproc) 是一种命令行工具,可验证 SLAX 脚本语法,在 SLAX 和 XSLT 格式之间转换,并格式化或运行 SLAX 脚本。slaxproc 模式定义处理器执行的功能。以下部分概述了常用模式。有关 slaxproc 模式的完整列表,请参阅 了解 SLAX 处理器 (slaxproc)。
验证 SLAX 脚本语法
SLAX 处理器提供了检查 SLAX 脚本语法的选项。
要检查 SLAX 脚本的语法,请使用或
-c
模式选项和脚本文件名发出slaxproc
命令--check
。$ slaxproc --check script1.slax OR $ slaxproc -c script1.slax
如果脚本语法正确,SLAX 处理器将发出“脚本检查成功”消息。否则,处理器会发出在脚本解析过程中检测到的错误消息列表。修复任何指示的错误,并重复检查。
在 XSLT 和 SLAX 格式之间转换脚本
SLAX 处理器支持在 SLAX 和 XSLT 格式之间转换脚本。转换脚本时,可以选择定位引用文件参数,或者分别使用命令行文件选项--input
或-i
--output
或-o
指定原始输入脚本和转换后的输出脚本。如果使用命令行文件选项,则可以在命令行上按任意顺序引用文件,并且文件选项可穿插在其他命令行选项之间。
如果不提供指定输入文件或输出文件的参数,则使用标准输入或标准输出。使用标准输入时,按 Ctrl+d 以发出文件结束的信号。
要将 SLAX 脚本转换为 XSLT,请使用或-x
模式选项发出 slaxproc
命令--slax-to-xslt
。要定位引用文件,请将输入 SLAX 文件指定为第一个论点,并将转换后的 XSLT 脚本所需的输出路径和文件名作为第二个论点。要使用命令行文件选项引用文件,请按任意顺序包括文件选项。例如:
$ slaxproc --slax-to-xslt test/script2.slax test/script2.xsl OR $ slaxproc -x -i test/script2.slax -o test/script2.xsl
要将 XSLT 脚本转换为 SLAX,请使用或-s
模式选项发出 slaxproc
命令--xslt-to-slax
。要定位引用文件,请将输入 XSLT 文件指定为第一个论点,并将转换后的 SLAX 脚本所需的输出路径和文件名作为第二个论点。要使用命令行文件选项引用文件,请按任意顺序包括文件选项。
可选,在将脚本从 XSLT 转换为 SLAX 时,包括 --write-version
指定已转换脚本的 SLAX 版本或 -w
选项。可接受的值为 1.0、1.1 和 1.2。默认版本是最新的 SLAX 版本。 -p
在输出中不需要 SLAX 脚本样板时,使用 选项进行部分输入。
以下示例将 XSLT 脚本 1.xsl 转换为 SLAX 脚本1.slax。SLAX 脚本将包含语句“版本 1.0”作为脚本的第一行。
$ slaxproc --xslt-to-slax -w 1.0 test/script1.xsl test/script1.slax OR $ slaxproc -s -w 1.0 -i test/script1.xsl -o test/script1.slax
具有选项的 -p
slaxproc --xslt-to-slax
模式可用于将 Junos OS 层次结构从 XML 格式快速转换为 SLAX。以下示例提供 XML 格式的 Junos OS [edit policy-options]
层次结构,作为对 SLAX 处理器的输入。选项-p
表示部分脚本输入,而不是完整脚本。
$ slaxproc -s -p <policy-options> <policy-statement> <name>export-policy</name> <term> <name>term1</name> <from> <route-filter> <address>10.0.4.4/30</address> <prefix-length-range>/30-/30</prefix-length-range> </route-filter> </from> <then> <accept/> </then> </term> </policy-statement> </policy-options> [Ctrl+d]
SLAX 处理器返回层次结构的 SLAX 格式。
<policy-options> { <policy-statement> { <name> "export-policy"; <term> { <name> "term1"; <from> { <route-filter> { <address> "10.0.4.4/30"; <prefix-length-range> "/30-/30"; } } <then> { <accept>; } } } }
运行 SLAX 脚本
SLAX 处理器支持从命令行执行 SLAX 脚本。这是默认 slaxproc 模式。要显式使用此模式,请使用--run
或-r
命令行模式选项发出 slaxproc
命令。
执行脚本时,可以选择按位置引用文件参数,或者分别使用命令行文件选项、--name
或 -o
-n
--input
-i
--output
或 或指定 SLAX 脚本文件以及输入和输出文件。如果使用命令行文件选项,则可以在命令行上按任意顺序引用文件,并且文件选项可穿插在其他命令行选项之间。
如果不需要输入文件,请使用 -E
选项来指示空输入文档。此外,如果输入或输出参数具有值“-”,则使用标准输入或标准输出。使用标准输入时,按 Ctrl+d 以发出文件结束的信号。
执行脚本的语法是:
$ slaxproc script input-file output-file OR $ slaxproc (--name | -n) script (--input | -i) input-file (--output | -o) output-file
要使用 slaxproc 命令行工具执行脚本:
格式化 SLAX 脚本
SLAX 处理器提供格式化脚本的选项,以更正首选样式的表示和间距。对脚本进行格式化时,可以选择定位引用文件参数,或者使用命令行文件选项 --input
,或者 -i
--output
-o
,分别指定未格式化的输入文件和格式化输出文件。如果您使用命令行文件选项,则可以在命令行的任意顺序引用这些文件。
要格式化 SLAX 脚本,请使用--format
或-F
模式选项发出 slaxproc
命令。要按位置引用文件,请将未格式化的 SLAX 脚本指定为第一个论点,并将格式化 SLAX 脚本所需的输出路径和文件名指定为第二个论点。要使用命令行文件选项引用文件,请按任意顺序包括文件选项。例如:
$ slaxproc --format script1.slax script1-format.slax OR $ slaxproc -F -i script1.slax -o script1-format.slax
鉴于以下未格式化的 SLAX 脚本即输入:
version 1.1; decimal-format default-format { decimal-separator "." ; digit "#" ; grouping-separator "," ; infinity "Infinity" ; minus-sign "-" ; nan "NaN"; pattern-separator ";" ; percent "%"; per-mille "\x2030"; zero-digit "0" ; } match / { var $number = -14560302.5; expr format-number($number, "###,###.00", "default-format"); }
SLAX 处理器将输出以下格式化的 SLAX 脚本:
version 1.1; decimal-format default-format { decimal-separator "."; digit "#"; grouping-separator ","; infinity "Infinity"; minus-sign "-"; pattern-separator ";"; percent "%"; per-mille " 30"; zero-digit "0"; nan "NaN"; } match / { var $number = -14560302.5; expr format-number($number, "###,###.00", "default-format"); }