This is an automated email from the ASF dual-hosted git repository.

slawrence pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil-site.git


The following commit(s) were added to refs/heads/main by this push:
     new 7bf7b9e  Update CLI documentation
7bf7b9e is described below

commit 7bf7b9e3bd87220bda34d6a108a9d75351781df8
Author: Steve Lawrence <[email protected]>
AuthorDate: Tue Nov 4 11:54:03 2025 -0500

    Update CLI documentation
    
    - Add documentation for EXI CLI documentation
    - Update commands to match CLI (e.g. validate has changed
    - Reformat so it follows the one sentence per line and the common
      markdown format we use
    - Also changes CSS so code in header is not syntax-hightlighted. Syntax
      highlighting in headers generally looks bad
---
 site/assets/themes/apache/css/style.css |   3 +-
 site/cli.md                             | 560 ++++++++++++++++++++------------
 2 files changed, 354 insertions(+), 209 deletions(-)

diff --git a/site/assets/themes/apache/css/style.css 
b/site/assets/themes/apache/css/style.css
index 5cc8567..66bd934 100644
--- a/site/assets/themes/apache/css/style.css
+++ b/site/assets/themes/apache/css/style.css
@@ -495,7 +495,8 @@ dd {
        margin-left: 30px;
 }
 
-dt code {
+dt code, h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
        color: inherit;
        background-color: inherit;
+       padding: 0;
 }
diff --git a/site/cli.md b/site/cli.md
index 5d8d24e..cd50b93 100644
--- a/site/cli.md
+++ b/site/cli.md
@@ -24,433 +24,577 @@ limitations under the License.
 <!-- markdownlint-disable line-length -->
 <!-- markdownlint-disable no-duplicate-heading -->
 
-The binary Daffodil [releases](/releases) contain a ``/bin`` directory with 
two scripts: ``daffodil.bat`` for Windows and ``daffodil`` for Linux. These 
files must be executed on the command line. The general usage is:
+The binary Daffodil [releases](/releases) contain a `/bin` directory with two 
scripts: `daffodil.bat` for Windows and `daffodil` for Linux.
+These files must be executed on the command line. The general usage is:
 
-    daffodil [GLOBAL_OPTIONS] <subcommand> [SUBCOMMAND_OPTIONS]
+```
+daffodil [GLOBAL_OPTIONS] <subcommand> [SUBCOMMAND_OPTIONS]
+```
 
 The available subcommands are:
 
-- [parse](#parse-subcommand)
-- [unparse](#unparse-subcommand)
-- [save-parser](#save-parser-subcommand)
-- [test](#test-subcommand)
-- [performance](#performance-subcommand)
-- [generate](#generate-subcommand)
+- [parse](#parse-subcommand) - parse a file, using either a DFDL schema or a 
saved parser
+- [unparse](#unparse-subcommand) - unparse an infoset file, using either a 
DFDL schema or a saved parser
+- [save-parser](#save-parser-subcommand) - save a parser that can be reused 
for parsing and unparsing
+- [test](#test-subcommand) - list or execute tests in a TDML file
+- [performance](#performance-subcommand) - run a performance test (parse or 
unparse), using either a DFDL schema or a saved parser
+- [generate](#generate-subcommand) - generate C code from a DFDL schema to 
parse or unparse data
+- [exi](#exi) - encode or decode an XML file with Efficient XML Interchange 
(EXI)
 
 # Environment Variables
 
 Setting environment variables may be necessary to allow imports, includes, and 
running TDML files to work.
 
-``DAFFODIL_CLASSPATH``
+`DAFFODIL_CLASSPATH`
 
-   : Daffodil will search its classpath for includes and imports, jars 
containing schemas, and some TDML files. To tell Daffodil to look for files in 
additional directories, set the ``DAFFODIL_CLASSPATH`` environment variable, 
for example:
+: Daffodil will search its classpath for includes and imports, and jars 
containing schemas and Daffodil plugins.
+  To tell Daffodil to look for files in additional directories, set the 
`DAFFODIL_CLASSPATH` environment variable, for example:
+  ```
+  export DAFFODIL_CLASSPATH="/path/to/imports/:/path/to/plugins/"
+  ```
+  In addition to defining directories to search for imports and includes, you 
can add a CatalogManager.properties file to `DAFFODIL_CLASSPATH` to direct 
Daffodil to a relative path location of a user XML Catalog.
 
-         export DAFFODIL_CLASSPATH="/path/to/imports/:/path/to/includes/"
+`DAFFODIL_JAVA_OPTS`
 
-     In addition to defining directories to search for imports and includes, 
you can add a CatalogManager.properties file to ``DAFFODIL_CLASSPATH`` to 
direct Daffodil to a relative path location of a user XML Catalog.
+: Specified additionalify java options to provide to Daffodil.
+  If not specified, the `JAVA_OPTS` environment variable will be used.
+  If that is not specified, reasonable defaults for Daffodil will be used.
 
-``DAFFODIL_JAVA_OPTS``
+`DAFFODIL_TDML_API_INFOSETS`
 
-   : If you need to specify java options specific to Daffodil, you can set the 
``DAFFODIL_JAVA_OPTS`` environment variable. If not specified, the 
``JAVA_OPTS`` environment variable will be used. If that is not specified, 
reasonable defaults for Daffodil will be used.
+: Controls which Daffodil APIs and infoset types are used when running TDML 
tests with the [test](#test-subcommand) subcommand.
 
-``DAFFODIL_TDML_API_INFOSETS``
+  If not set or has a value of `scala`, the standard Daffodil API and Scala 
infoset type is used.
 
-   : If you need to specify which API (legacy or both (SAX and legacy)) should 
be called when running TDML files with the ``test`` subcommand, you can set the 
``DAFFODIL_TDML_API_INFOSETS`` environment variable to either `scala` or `all`. 
If that environment variable is not specified, then Daffodil will default to 
`scala`, using the legacy API and only creating a Scala infoset. Otherwise, if 
`all` is specified, Daffodil will use both the SAX and Legacy APIs and will 
create infosets from  [...]
+  If set to `all`, both the standard Daffodil API and SAX APIs are used, an 
all available infoset inputters/outputters are used, including Scala, JDOM, 
W3CDOM, JSON, and XML text.
+  The results of the different infosets are compared to ensure equality.
+  This can have a negative impact on TDML performance, but can be useful for 
regression testing.
 
-``CC``
+`CC`
 
-   : If you need to specify which C compiler should be called when running 
TDML files with the ``test`` subcommand using Daffodil's codegen-c backend, you 
can set the ``CC`` environment variable. If that environment variable is not 
specified, then Daffodil will call the first C compiler driver command it finds 
within the ``PATH`` environment variable from the following list: "zig cc", 
"cc", "clang", "gcc" (in that order). The reason for "zig cc" coming first is 
because [zig cc](https://a [...]
+: Specifies which C compiler should be called when running TDML files with the 
[test](#test-subcommand) subcommand using Daffodil's codegen-c backend.
+  If that environment variable is not specified, then Daffodil will call the 
first C compiler driver command it finds within the `PATH` environment variable 
from the following list: "zig cc", "cc", "clang", "gcc" (in that order).
+  The reason for "zig cc" coming first is because [zig 
cc](https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html)
 uses a sophisticated caching system to avoid recompiling the same C source 
files, which can speed up TDML tests.
 
 # Global Options
 
-``-v, --verbose``
+`-v, --verbose`
 
-   : Enable verbose mode and increment verbosity level. Each additional ``-v`` 
provides a new level of information.
+: Enable verbose mode and increment verbosity level. Each additional `-v` 
provides a new level of information.
 
-``--version``
+`--version`
 
-   : Display Daffodil's version.
+: Display Daffodil's version.
 
-``-h, --help``
+`-h, --help`
 
-   : Display a help message.
+: Display a help message.
 
 # Parse Subcommand
 
 Parse a file, using either a DFDL schema or a saved parser.
 
-## Usage
-
-    daffodil parse (-s <schema> [-r <root>] | -P <parser>)
-                   [PARSE_OPTS] [infile]
+`--` can be used to separate command-line options from trailing arguments.
 
-## Parse Options
+## Usage
 
-``-c, --config FILE``
+```
+daffodil parse (-s <schema> | -P <parser>) [PARSE_OPTS] [infile]
+```
 
-   : XML file containing configuration items, such as external variables or 
Daffodil tunables. See [Configuration](/configuration) for details on the file 
format.
+## Options
 
-``-D VARIABLE=VALUE``
+`-c, --config <file>`
 
-   : Variables to be used when parsing. A namespace may be specified by 
prefixing ``VARIABLE`` with ``{NAMESPACE}``, for example:
+: XML file containing configuration items, such as external variables or 
Daffodil tunables.
+  See [Configuration](/configuration) for details on the file format.
 
-     ```-D{http://example.com}var1=var```
+`-Dvariable=value [variable=value]...`
 
-``-d, --debug [FILE]``
+: Variables to be used when parsing.
+  A namespace may be specified by prefixing `variable` with `{namespace}`, for 
example:
+  ```
+  -D{http://example.com}var1=var
+  ```
 
-   : Enable the interactive debugger. See the [Interactive 
Debugger](/debugger) documentation for more information.
-   
-        The optional ``FILE`` argument contains a list of debugger commands 
that are provided to the debugger as if they were typed by the user.
-   
-        This option cannot be used with the ``--trace`` option.
+`-d, --debug [file]`
 
-``-I, --infoset-type TYPE``
+: Enable the interactive debugger. See the [Interactive Debugger](/debugger) 
documentation for more information.
+  The optional `[file]` argument contains a list of debugger commands that are 
provided to the debugger as if they were typed by the user.
+  This option cannot be used with the `--trace` option.
 
-   : Infoset type to output. ``TYPE`` must be one of ``xml``, ``scala-xml``, 
``json``, ``jdom``, ``sax``, or ``null``. Defaults to ``xml`` if not provided.
+`-I, --infoset-type <type>`
 
-``-o, --output FILE``
+: Infoset type to output.
+  `<type>` must be one of `xml`, `scala-xml`, `json`, `jdom`, `sax`, `exi`, 
`exisa`, `w3cdom`, or `null`.
+  Defaults to `xml` if not provided.
 
-   : Output file to write the infoset to. If the option is not given or 
``FILE`` is -, the infoset is written to standard output.
+`-o, --output <file>`
 
-``-P, --parser FILE``
+: Output file to write the infoset to.
+  If the option is not given or `<file>` is `-`, the infoset is written to 
standard output.
 
-   : Use a previously saved parser inside ``FILE``, created using the 
``save-parser`` subcommand. This option cannot be used with the ``--schema`` 
option or with the ``--validate`` option set to ``on``.
+`-P, --parser <file>`
 
-``-r, --root ROOT``
+: Use a previously saved parser inside `<file>`, created using the 
[save-parser](#save-parser-subcommand) subcommand.
+ This option cannot be used with the `--schema`.
 
-   : The root element to use. This must be one of the top-level elements of 
the DFDL schema defined with ``--schema``. This requires the ``--schema`` 
option to be defined. Defaults to the schema's first top-level element if not 
provided. A namespace may be specified by prefixing ``ROOT`` with 
``{NAMESPACE}``.
+`-r, --root <root>`
 
-``-s, --schema FILE``
+: The root element to use. This must be one of the top-level elements of the 
DFDL schema defined with `--schema`.
+  This requires the `--schema` option to be defined.
+  Defaults to the schemas first top-level element if not provided.
+  A namespace may be specified by prefixing `<root>` with `{namespace}`.
 
-   : The annotated DFDL schema to use to create the parser. This option cannot 
be used with the ``--parser`` option.
+`-s, --schema <file>`
 
-``--stream``
+: The annotated DFDL schema to use to create the parser.
+  This option cannot be used with the `--parser` option.
 
-   : Rather than throwing an error when left over data exists after a parse, 
repeat the parse with the remaining data. Parsing repeats until end of data is 
reached, an error occurs, or no data is consumed. Output infosets are separated 
by a NUL character.
+`--stream`
 
-``--nostream``
+: Rather than throwing an error when left over data exists after a parse, 
repeat the parse with the remaining data.
+  Parsing repeats until end of data is reached, an error occurs, or no data is 
consumed.
+  Output infosets are separated by a NUL character.
 
-   : Stop after the first parse, throwing an error if left over data exists. 
This is the default behavior.
+`--nostream`
 
-``-T TUNABLE=VALUE``
+: Stop after the first parse, throwing an error if left over data exists.
+  This is the default behavior.
 
-   : Tunable configuration options to change Daffodil's behavior. See 
[Configuration](/configuration) for the list of tunable parameters.
+`-Ttunable=value [tunable=value]...`
 
-``-t, --trace``
+: Tunable configuration options to change Daffodil's behavior.
+  See [Configuration](/configuration) for the list of tunable parameters.
 
-   : Enable a trace mode. This mode prints out helpful information during 
every stage of parsing.
+`-t, --trace`
 
-        This option cannot be used with the ``--debug`` option.
+: Enable trace mode. This mode prints out helpful information during every 
stage of parsing.
+  This option cannot be used with the `--debug` option.
 
-``-V, --validate MODE``
+`-V, --validate <validator_name>`
 
-   : The validation mode. ``MODE`` must be one of ``on``, ``limited``, 
``off``, or a validator plugin name. Defaults to ``off`` if not provided. 
Validator plugins are provided by SPI and are referenced here using the 
``name`` defined by the plugin. ``MODE`` cannot be ``on`` when used with the 
``--parser`` option.
+: Specify a validator to use. `<validator_name>` can be one of `off`, 
`daffodil`, `xerces[=value]`, `schematron[=value]`, or a `custom 
validator_name[=value]`.
+  The optional value parameter provides a file to the validator (e.g. .xsd, 
.sch, .conf, .properties) used for validator configuration.
+  If using --parser, some validators may require that a config file be 
specified.
 
-``[INFILE]``
+`-h, --help`
 
-   : Input file to parse. If not specified, or is a value of -, reads from 
standard input. If supplied, the input file must be the last option on the 
command line.
+: Display a help message.
 
-``-h, --help``
+`[infile]`
 
-   : Display a help message.
+: Input file to parse.
+  If not specified, or is a value of `-`, reads from standard input.
+  If supplied, the input file must be the last option on the command line.
 
 ## Example
 
-    daffodil parse -s csv.dfdl.xsd test_file.csv
+```
+daffodil parse -s csv.dfdl.xsd test_file.csv
+```
 
 # Unparse Subcommand
 
-Unparse an infoset file, using either a DFDL schema or a saved parser.
+Unparse an infoset file, using either a DFDL schema or a saved parser
 
-## Usage
+`--` can be used to separate command-line options from trailing arguments
 
-    daffodil unparse (-s <schema> [-r <root>] | -P <parser>)
-                     [UNPARSE_OPTS] [infile]
+## Usage
 
-## Unparse Options
+```
+daffodil unparse (-s <schema> | -P <parser>) [UNPARSE_OPTS] [infile]
+```
 
-``-c, --config FILE``
+## Options
 
-   : XML file containing configuration items, such as external variables or 
Daffodil tunables. See [Configuration](/configuration) for details on the file 
format.
+`-c, --config <file>`
 
-``-D VARIABLE=VALUE``
+: XML file containing configuration items, such as external variables or 
Daffodil tunables.
+  See [Configuration](/configuration) for details on the file format.
 
-   : Variables to be used when unparsing. A namespace may be specified by 
prefixing ``VARIABLE`` with ``{NAMESPACE}``, for example:
+`-Dvariable=value [variable=value]...`
 
-     ```-D{http://example.com}var1=var```
+: Variables to be used when parsing.
+  A namespace may be specified by prefixing `variable` with `{namespace}`, for 
example:
 
-``-d, --debug [FILE]``
+```
+-D{http://example.com}var1=var
+```
 
-   : Enable the interactive debugger. See the [Interactive 
Debugger](/debugger) documentation for more information.
+`-d, --debug [file]`
 
-        The optional ``FILE`` argument contains a list of debugger commands 
that are provided to the debugger as if they were typed by the user.
-   
-        This option cannot be used with the ``--trace`` option.
+: Enable the interactive debugger. See the [Interactive Debugger](/debugger) 
documentation for more information.
+  The optional `[file]` argument contains a list of debugger commands that are 
provided to the debugger as if they were typed by the user.
+  This option cannot be used with the `--trace` option.
 
-``-I, --infoset-type TYPE``
+`-I, --infoset-type <type>`
 
-   : Infoset type to unparse. ``TYPE`` must be one of ``xml``, ``scala-xml``, 
``json``, ``jdom``, or ``sax``. Defaults to ``xml`` if not provided.
+: Infoset type to unparse.
+  `<type>` must be one of `xml`, `scala-xml`, `json`, `jdom`, `sax`, `exi`, 
`exisa`, `w3cdom`, or `null`.
+  Defaults to `xml` if not provided.
 
-``-o, --output FILE``
+`-o, --output <file>`
 
-   : Output file to write the data to. If the option is not given or ``FILE`` 
is -, the data is written to standard output.
+: Output file to write the data to.
+  If the option is not given or `<file>` is `-`, the infoset is written to 
standard output.
 
-``-P, --parser FILE``
+`-P, --parser <file>`
 
-   : Use a previously saved parser inside ``FILE``, created using the 
``save-parser`` subcommand. This option cannot be used with the ``--schema`` 
option or with the ``--validate`` option set to ``on``.
+: Use a previously saved parser inside `<file>`, created using the 
[save-parser](#save-parser-subcommand) subcommand.
+  This option cannot be used with the `--schema`.
 
-``-r, --root ROOT``
+`-r, --root <root>`
 
-   : The root element to use. This must be one of the top-level elements of 
the DFDL schema defined with ``--schema``. This requires the ``--schema`` 
option to be defined. Defaults to the schema's first top-level element if not 
provided. A namespace may be specified by prefixing ``ROOT`` with 
``{NAMESPACE}``.
+: The root element to use. This must be one of the top-level elements of the 
DFDL schema defined with `--schema`.
+  This requires the `--schema` option to be defined.
+  Defaults to the schemas first top-level element if not provided.
+  A namespace may be specified by prefixing `<root>` with `{namespace}`.
 
-``-s, --schema FILE``
+`-s, --schema <file>`
 
-   : The annotated DFDL schema to use to create the parser. This option cannot 
be used with the ``--parser`` option.
+: The annotated DFDL schema to use to create the parser.
+  This option cannot be used with the `--parser` option.
 
-``--stream``
+`--stream`
 
-   : Split the input data at NUL characters and unparse each chunk separately 
to the same output file.
+: Split the input data on the NUL character, and unparse each chunk separatly.
 
-``--nostream``
+`--nostream`
 
-   : Treat the entire input data as one infoset. This is the default behavior.
+: Treat the entire input data as on infoset.
+  This is the default behavior.
 
-``-T TUNABLE=VALUE``
+`-Ttunable=value [tunable=value]...`
 
-   : Tunable configuration options to change Daffodil's behavior. See 
[Configuration](/configuration) for the list of tunable parameters.
+: Tunable configuration options to change Daffodil's behavior.
+  See [Configuration](/configuration) for the list of tunable parameters.
 
-``-t, --trace``
+`-t, --trace`
 
-   : Enable a trace mode. This mode prints out helpful information during 
every stage of parsing.
+: Enable trace mode. This mode prints out helpful information during every 
stage of unparsing.
+  This option cannot be used with the `--debug` option.
 
-        This option cannot be used with the ``--debug`` option.
+`-V, --validate <validator_name>`
 
-``-V, --validate MODE``
+: Specify a validator to use. `<validator_name>` can be one of `off`, 
`daffodil`, `xerces[=value]`, `schematron[=value]`, or a `custom 
validator_name[=value]`.
+  The optional value parameter provides a file to the validator (e.g. .xsd, 
.sch, .conf, .properties) used for validator configuration.
+  If using --parser, some validators may require that a config file be 
specified.
+  Note that using this flag doesn't use the created validator as unpase 
validation is currently unsupported.
 
-   : The validation mode. ``MODE`` must be one of ``on``, ``limited``, 
``off``, or a validator plugin name. Defaults to ``off`` if not provided. 
Validator plugins are provided by SPI and are referenced here using the 
``name`` defined by the plugin. ``MODE`` cannot be ``on`` when used with the 
``--parser`` option.
+`-h, --help`
 
-``[INFILE]``
+: Display a help message.
 
-   : Input file to unparse. If not specified, or is a value of -, reads from 
standard input. If supplied, the input file must be the last option on the 
command line.
+`[infile]`
 
-``-h, --help``
-
-   : Display a help message.
+: Input file to unparse.
+  If not specified, or is a value of `-`, reads from standard input.
+  If supplied, the input file must be the last option on the command line.
 
 ## Example
 
-    daffodil unparse -s csv.dfdl.xsd test_file.infoset
+```
+daffodil unparse -s csv.dfdl.xsd test_file.infoset
+```
 
 # Save Parser Subcommand
 
 Save a parser that can be reused for parsing and unparsing.
 
-## Usage
-
-    daffodil save-parser -s <schema> [-r <root>]
-                        [SAVE_PARSER_OPTS] [outfile]
-
-## Save Parser Options
+`--` can be used to separate command-line options from trailing arguments
 
-``-c, --config FILE``
+## Usage
 
-   : XML file containing configuration items, such as external variables or 
Daffodil tunables. See [Configuration](/configuration) for details on the file 
format.
+```
+daffodil save-parser -s <schema> [SAVE_PARSER_OPTS] [outfile]
+```
 
-``-D VARIABLE=VALUE``
+## Options
 
-   : Variables to be used when parsing or unparsing. A namespace may be 
specified by prefixing ``VARIABLE`` with ``{NAMESPACE}``, for example:
+`-c, --config <file>`
 
-     ```-D{http://example.com}var1=var```
+: XML file containing configuration items, such as external variables or 
Daffodil tunables.
+  Note variable values defined in the configuration file will not be included 
in the saved parser--the saved parser only embeds variable values defined in 
the schema.
+  See [Configuration](/configuration) for details on the file format.
 
-``-r, --root ROOT``
+`-r, --root <root>`
 
-   : The root element to use. This must be one of the top-level elements of 
the DFDL schema defined with ``--schema``. This requires the ``--schema`` 
option to be defined. Defaults to the schema's first top-level element if not 
provided. A namespace may be specified by prefixing ``ROOT`` with 
``{NAMESPACE}``.
+: The root element to use. This must be one of the top-level elements of the 
DFDL schema defined with `--schema`.
+  This requires the `--schema` option to be defined.
+  Defaults to the schemas first top-level element if not provided.
+  A namespace may be specified by prefixing `<root>` with `{namespace}`.
 
-``-s, --schema FILE``
+`-s, --schema <file>`
 
-   : The annotated DFDL schema to use to create the parser. This option must 
be supplied.
+: The annotated DFDL schema to use to create the parser.
+  This option must be supplied.
 
-``-T TUNABLE=VALUE``
+`-Ttunable=value [tunable=value]...`
 
-   : Tunable configuration options to change Daffodil's behavior. See 
[Configuration](/configuration) for the list of tunable parameters.
+: Tunable configuration options to change Daffodil's behavior.
+  See [Configuration](/configuration) for the list of tunable parameters.
 
-``[OUTFILE]``
+`-h, --help`
 
-   : Output file to save the parser to. If the option is not given or is -, 
the parser is saved to standard output. If supplied, the output file must be 
the last option on the command line.
+: Display a help message.
 
-``-h, --help``
+`[outfile]`
 
-   : Display a help message.
+: Output file to write the saved parser to.
+  If the option is not given or is `-`, the parser is written to standard 
output.
+  If supplied, the output file must be the last option on the command line.
 
 ## Example
 
-    daffodil save-parser -s csv.dfdl.xsd csv_parser.xml
+```
+daffodil save-parser -s csv.dfdl.xsd csv_parser.bin
+```
 
 # Test Subcommand
 
 List or execute tests in a TDML file.
 
-## Usage
+`--` can be used to separate command-line options from trailing arguments
 
-    daffodil test [TEST_OPTS] <tdmlfile> [testnames...]
+## Usage
 
-## Test Options
+```
+daffodil test [TEST_OPTS] <tdmlfile> [testnames...]
+```
 
-``-d, --debug [FILE]``
+## Options
 
-   : Enable the interactive debugger. See the [Interactive 
Debugger](/debugger) documentation for more information.
+`-d, --debug [file]`
 
-        The optional ``FILE`` argument contains a list of debugger commands 
that are provided to the debugger as if they were typed by the user.
+: Enable the interactive debugger. See the [Interactive Debugger](/debugger) 
documentation for more information.
+  The optional `[file]` argument contains a list of debugger commands that are 
provided to the debugger as if they were typed by the user.
+  This option cannot be used with the `--trace` option.
    
-        This option cannot be used with the ``--trace`` option.
+`-I, --implementation <implementation>`
 
-``-I, --implementation  <implementation>``
+: Implementation to run TDML tests.
+  Choose `daffodil` or `daffodilC`.
+  Defaults to daffodil.
 
-   : Implementation to run TDML tests. Choose daffodil or
-     daffodilC. Defaults to daffodil.
+`-i, --info`
 
-``-i, --info``
+: Increment test result information output level, one level for each `-i`.
 
-   : Increment test result information output level, one level for each -i.
+`-l, --list`
 
-``-l, --list``
+: Show names and descriptions of test cases in a TDML file instead of running 
them.
 
-   : Show names and descriptions of test cases in a TDML file instead of 
running them.
+`-r, --regex`
 
-``-r, --regex``
+: Treat `[testnames...]` as regular expressions.
 
-   : Treat ``TESTNAMES...`` as regular expressions.
+`-t, --trace`
 
-``-t, --trace``
+: Enable a trace mode.
+  This mode prints out helpful information during every stage of parsing.
+  This option cannot be used with the `--debug` option.
 
-   : Enable a trace mode. This mode prints out helpful information during 
every stage of parsing.
+`-h, --help`
 
-        This option cannot be used with the ``--debug`` option.
+: Display a help message.
 
-``TDMLFILE``
+`<tdmlfile>`
 
-   : Test Data Markup Language (TDML) file.
+: Test Data Markup Language (TDML) file.
 
-``[TESTNAMES...]``
+`[testnames...]`
 
-   : Name(s) of test cases in the TDML file. If not given, all tests in 
``TDMLFILE`` are run.
-
-``-h, --help``
-
-   : Display a help message.
+: Name(s) of test cases in the TDML file.
+  If not given, all tests in `<tdmlfile>` are run.
 
 ## Example
 
-    daffodil test csv.tdml
+```
+daffodil test csv.tdml
+```
 
 # Performance Subcommand
 
 Run a performance test (parse or unparse), using either a DFDL schema or a 
saved parser.
 
-## Usage
+`--`  can be used to separate command-line options from trailing arguments
 
-    daffodil performance (-s <schema> [-r <root>] | -P <parser>)
-                         [PERFORMANCE_OPTS] <infile>
+## Usage
 
-## Performance Options
+```
+daffodil performance (-s <schema> | -P <parser>) [PERFORMANCE_OPTS] <infile>
+```
 
-``-c, --config FILE``
+## Options
 
-   : XML file containing configuration items, such as external variables or 
Daffodil tunables. See [Configuration](/configuration) for details on the file 
format.
+### `-c, --config <file>`
 
-``-D VARIABLE=VALUE``
+XML file containing configuration items, such as external variables or 
Daffodil tunables.
+See [Configuration](/configuration) for details on the file format.
 
-   : Variables to be used when parsing or unparsing. ``VARIABLE`` can be 
prefixed with ``{NAMESPACE}`` to define which namespace the variable belongs 
in, for example:
+`-Dvariable=value [variable=value]...`
 
-     ```-D{http://example.com}var1=var```
+: Variables to be used when parsing.
+  A namespace may be specified by prefixing `variable` with `{namespace}`, for 
example:
+  ```
+  -D{http://example.com}var1=var
+  ```
 
-``-I, --infoset-type TYPE``
+`-I, --infoset-type <type>`
 
-   : Infoset type to output or unparse. ``TYPE`` must be one of ``xml``, 
``scala-xml``, ``json``, ``jdom``, ``sax``, or ``null``. Defaults to ``xml`` if 
not provided. Note that ``null`` is not valid if the ``--unparse`` option is 
provided.
+: Infoset type to output.
+  `<type>` must be one of `xml`, `scala-xml`, `json`, `jdom`, `sax`, `exi`, 
`exisa`, `w3cdom`, or `null`.
+  Defaults to `xml` if not provided.
 
-``-N, --number NUMBER``
+`-N, --number <number>`
 
-   : The total number of files to process. Defaults to 1.
+: The total number of files to process. Defaults to 1.
 
-``-P, --parser FILE``
+`-P, --parser <file>`
 
-   : Use a previously saved parser inside ``FILE``, created using the 
``save-parser`` subcommand. This option cannot be used with the ``--schema`` 
option or with the ``--validate`` option set to ``on``.
+: Use a previously saved parser inside `<file>`, created using the 
[save-parser](#save-parser-subcommand) subcommand.
+  This option cannot be used with the `--schema`.
 
-``-r, --root ROOT``
+`-r, --root <root>`
 
-   : The root element to use. This must be one of the top-level elements of 
the DFDL schema defined with ``--schema``. This requires the ``--schema`` 
option to be defined. Defaults to the schema's first top-level element if not 
provided. A namespace may be specified by prefixing ``ROOT`` with 
``{NAMESPACE}``.
+: The root element to use. This must be one of the top-level elements of the 
DFDL schema defined with `--schema`.
+  This requires the `--schema` option to be defined.
+  Defaults to the schemas first top-level element if not provided.
+  A namespace may be specified by prefixing `<root>` with `{namespace}`.
 
-``-s, --schema FILE``
+`-s, --schema <file>`
 
-   : The annotated DFDL schema to use to create the parser. This option cannot 
be used with the ``--parser`` option.
+: The annotated DFDL schema to use to create the parser.
+  This option cannot be used with the `--parser` option.
 
-``-t, --threads THREADS``
+`-t, --threads <threads>`
 
-   : The number of threads to use. Defaults to 1.
+: The number of threads to use. Defaults to 1.
 
-``-T TUNABLE=VALUE``
+`-Ttunable=value [tunable=value]...`
 
-   : Tunable configuration options to change Daffodil's behavior. See 
[Configuration](/configuration) for the list of tunable parameters.
+: Tunable configuration options to change Daffodil's behavior.
+  See [Configuration](/configuration) for the list of tunable parameters.
 
-``-u, --unparse``
+`-u, --unparse`
 
-   : Perform unparse instead of parse for performance test.
+: Perform unparse instead of parse for performance test.
 
-``-V, --validate MODE``
+`-V, --validate <validator_name>`
 
-   : The validation mode. ``MODE`` must be one of ``on``, ``limited``, 
``off``, or a validator plugin name. Defaults to ``off`` if not provided. 
Validator plugins are provided by SPI and are referenced here using the 
``name`` defined by the plugin. ``MODE`` cannot be ``on`` when used with the 
``--parser`` option.
+: Specify a validator to use. `<validator_name>` can be one of `off`, 
`daffodil`, `xerces[=value]`, `schematron[=value]`, or a `custom 
validator_name[=value]`.
+  The optional value parameter provides a file to the validator (e.g. .xsd, 
.sch, .conf, .properties) used for validator configuration.
+  If using --parser, some validators may require that a config file be 
specified.
 
-``INFILE``
+`-h, --help`
 
-   : Input file or directory containing input files to parse or unparse. 
Required argument.
+: Display a help message.
 
-``-h, --help``
+`<infile>`
 
-   : Display a help message.
+: Input file or directory containing input files to parse or unparse. Required 
argument.
 
 ## Example
 
-    daffodil performance -s csv.dfdl.xsd -N 1000 -t 5 test_file.csv
+```
+daffodil performance -s csv.dfdl.xsd -N 1000 -t 5 test_file.csv
+```
 
 # Generate Subcommand
 
 Generate C code from a DFDL schema to parse or unparse data.
 
+`--` can be used to separate command-line options from trailing arguments
+
 ## Usage
 
-    daffodil generate <language> [SUBCOMMAND_OPTS]
+```
+daffodil generate <language> -s <schema> [GENERATE_OPTIONS] [outdir]
+```
 
-    --- there is only one choice for <language> at this time ---
+There is only one choice for `<language>` at this time: `c`
 
-    daffodil generate c -s <schema> [-r <root>]
-                        [GENERATE_OPTIONS] [outdir]
 
-## Generate Options
+## Options
+
+`-c, --config <file>`
+
+: XML file containing configuration items, such as external variables or 
Daffodil tunables.
+  See [Configuration](/configuration) for details on the file format.
+
+`-r, --root <root>`
+
+: The root element to use. This must be one of the top-level elements of the 
DFDL schema defined with `--schema`.
+  This requires the `--schema` option to be defined.
+  Defaults to the schemas first top-level element if not provided.
+  A namespace may be specified by prefixing `<root>` with `{namespace}`.
+
+`-s, --schema <file>`
+
+: The annotated DFDL schema to use to create the parser.
+  This option must be supplied.
+
+`-Ttunable=value [tunable=value]...`
+
+: Tunable configuration options to change Daffodil's behavior.
+  See [Configuration](/configuration) for the list of tunable parameters.
+
+`-h, --help`
+
+: Display a help message.
+
+`[outdir]`
+
+: The output directory in which to create or replace a `c` subdirectory 
containing the generated C code.
+  If the option is not given, a `c` subdirectory within the current directory 
will be created/replaced.
+  If supplied, the output directory must be the last option on the command 
line.
+
+## Example
+
+```
+daffodil generate c -s csv.dfdl.xsd
+```
+
+# EXI Subcommand
+
+Encode/decode an XML file with Efficient XML Interchange (EXI). If a schema is 
specified, it will use schema aware encoding/decoding.
+
+`--` can be used to separate command-line options from trailing arguments
+
+## Usage
 
-``-c, --config FILE``
+```
+daffodil exi [EXI_OPTIONS] [infile]
+```
 
-   : XML file containing configuration items, such as external variables or 
Daffodil tunables. See [Configuration](/configuration) for details on the file 
format.
+## Options
 
-``-r, --root ROOT``
+`-d, --decode`
 
-   : The root element to use. This must be one of the top-level elements of 
the DFDL schema defined with ``--schema``. This requires the ``--schema`` 
option to be defined. Defaults to the schema's first top-level element if not 
provided. A namespace may be specified by prefixing ``ROOT`` with 
``{NAMESPACE}``.
+: Decode `[infile]` from EXI to XML.
 
-``-s, --schema FILE``
+`-o, --output <file>`
 
-   : The annotated DFDL schema to use to generate C code. This option must be 
supplied.
+: Output file to write the encoded/decoded data to.
+  If the option is not given or `<file>` is `-`, the infoset is written to 
standard output.
 
-``-T TUNABLE=VALUE``
+`-s, --schema <file>`
 
-   : Tunable configuration options to change Daffodil's behavior. See 
[Configuration](/configuration) for the list of tunable parameters.
+: The annotated DFDL schema to use for schema aware encoding/decoding.
 
-``[OUTDIR]``
+`-h, --help`
 
-   : The output directory in which to create or replace a `c` subdirectory 
containing the generated C code. If the option is not given, a `c` subdirectory 
within the current directory will be created/replaced. If supplied, the output 
directory must be the last option on the command line.
+: Display a help message.
 
-``-h, --help``
+`[infile]`
 
-   : Display a help message.
+: Input file to encode/decode.
+  If not specified, or is a value of `-`, reads from standard input.
+  If supplied, the input file must be the last option on the command line.
 
 ## Example
 
-    daffodil generate c -s csv.dfdl.xsd
+```
+daffodil exi -s csv.dfdl.xsd --decode file.exi
+```


Reply via email to