如何使用 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");
}