How to Use the SLAX Processor (slaxproc)
The SLAX processor (slaxproc) is a command-line tool that can validate SLAX script syntax, convert between SLAX and XSLT formats, and format or run SLAX scripts. The slaxproc modes define what function the processor performs. The following sections outlines commonly used modes. For a complete list of the slaxproc modes, see Understanding the SLAX Processor (slaxproc).
Validating SLAX Script Syntax
The SLAX processor provides an option to check the syntax of a SLAX script.
To check the syntax of a SLAX script, issue the
slaxproc
command with the--check
or-c
mode option and the script filename.$ slaxproc --check script1.slax OR $ slaxproc -c script1.slax
If the script syntax is correct, the SLAX processor issues a "script check succeeds" message. Otherwise, the processor issues a list of error messages detected during script parsing. Fix any indicated errors, and repeat the check.
Converting Scripts Between XSLT and SLAX Formats
The SLAX processor supports converting scripts between SLAX
and XSLT formats. When you convert a script, you have the option to
reference the file arguments positionally or use the command-line
file options, --input
or -i
and --output
or -o
, to specify the original input script and the converted
output script, respectively. If you use the command-line file options,
the files can be referenced in any order on the command line, and
the file options can be interspersed among other command-line options.
If you do not provide an argument specifying an input file or an output file, standard input or standard output is used. When using standard input, press Ctrl+d to signal the end-of-file.
To convert a SLAX script to XSLT, issue the slaxproc
command with the --slax-to-xslt
or -x
mode
option. To reference the files positionally, specify the input SLAX
file as the first argument and the desired output path and filename
of the converted XSLT script as the second argument. To reference
the files using command-line file options, include the file options
in any order. For example:
$ slaxproc --slax-to-xslt test/script2.slax test/script2.xsl OR $ slaxproc -x -i test/script2.slax -o test/script2.xsl
To convert an XSLT script to SLAX, issue the slaxproc
command with the --xslt-to-slax
or -s
mode
option. To reference the files positionally, specify the input XSLT
file as the first argument and the desired output path and filename
of the converted SLAX script as the second argument. To reference
the files using command-line file options, include the file options
in any order.
Optionally, when converting a script from XSLT to SLAX, include
the --write-version
or -w
option to specify
the SLAX version of the converted script. Acceptable values are 1.0,
1.1, and 1.2. The default version is the latest SLAX version. Use
the -p
option for partial input when you do not require
the SLAX script boilerplate in the output.
The following example converts the XSLT script script1.xsl to the SLAX script script1.slax. The SLAX script will include the statement "version 1.0;" as the first line of the script.
$ 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
The slaxproc --xslt-to-slax
mode with the -p
option is useful for quickly converting Junos OS hierarchies
from XML format into SLAX. The following example provides the Junos OS [edit policy-options]
hierarchy in XML format as input to the
SLAX processor. The -p
option indicates partial script
input as opposed to a full script.
$ 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]
The SLAX processor returns the SLAX formatting for the hierarchy.
<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>; } } } }
Running SLAX Scripts
The SLAX processor supports executing SLAX scripts from the
command line. This is the default slaxproc mode. To explicitly use
this mode, issue the slaxproc
command with the --run
or -r
command-line mode option.
When you execute a script, you have the option to reference
the file arguments positionally or use the command-line file options, --name
or -n
, --input
or -i
, and --output
or -o
, to specify the SLAX script
file, and the input and output files, respectively. If you use the
command-line file options, the files can be referenced in any order
on the command line, and the file options can be interspersed among
other command-line options.
If no input file is required, use the -E
option to
indicate an empty input document. Additionally, if the input or output
argument has the value "‑", standard input or standard output is used.
When using standard input, press Ctrl+d to signal the end-of-file.
The syntax for executing a script is:
$ slaxproc script input-file output-file OR $ slaxproc (--name | -n) script (--input | -i) input-file (--output | -o) output-file
To execute a script using the slaxproc command-line tool:
Formatting SLAX Scripts
The SLAX processor provides the option to format a script to
correct the indentation and spacing to the preferred style. When you
format a script, you have the option to reference the file arguments
positionally or use the command-line file options, --input
or -i
and --output
or -o
, to specify
the unformatted input file and the formatted output file, respectively.
If you use the command-line file options, the files can be referenced
in any order on the command line.
To format a SLAX script, issue the slaxproc
command with the --format
or -F
mode option.
To reference the files positionally, specify the unformatted SLAX
script as the first argument and the desired output path and filename
of the formatted SLAX script as the second argument. To reference
the files using command-line file options, include the file options
in any order. For example:
$ slaxproc --format script1.slax script1-format.slax OR $ slaxproc -F -i script1.slax -o script1-format.slax
Given the following unformatted SLAX script as input:
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"); }
the SLAX processor outputs the following formatted SLAX script:
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"); }