XO(1) | MidnightBSD General Commands Manual | XO(1) |
xo
— emit
formatted output based on format string and arguments
xo |
[-options ]
[argument...] |
The xo
utility allows command line access
to the functionality of the libxo
library. Using
xo
, shell scripts can emit
XML,
JSON, or
HTML using
the same commands that emit text output.
--close
path-C
|
--continuation
--depth
num--help
-H
|
--html
-J
|
--json
--leading-xpath
path--not-first
--open
path-p
|
--pretty
--style
style-T
|
--text
--top-warp
--version
-W
|
--warn
--warn-xml
--wrap
path-X
|
--xml
--xpath
The xo
utility accepts a format string
suitable for xo_emit(3)
and a set of zero or more arguments used to supply data for that string.
In addition, xo
accepts any of the
libxo
options listed in
xo_options(7).
In this example, xo
is used to emit the
same data encoded in text and then in XML by adding the "-p"
(pretty) and "-X" (XML output) flags:
% xo 'The {:product} is {:status}\n' stereo "in route" The stereo is in route % xo -p -X 'The {:product} is {:status}\n' stereo "in route" <product>stereo</product> <status>in route</status>
In this example, the output from a xo
command is shown in several styles:
xo "The {k:name} weighs {:weight/%d} pounds.\n" fish 6 TEXT: The fish weighs 6 pounds. XML: <name>fish</name> <weight>6</weight> JSON: "name": "fish", "weight": 6 HTML: <div class="line"> <div class="text">The </div> <div class="data" data-tag="name">fish</div> <div class="text"> weighs </div> <div class="data" data-tag="weight">6</div> <div class="text"> pounds.</div> </div>
The --wrap <path>
option can be used
to wrap emitted content in a specific hierarchy. The path is a set of
hierarchical names separated by the '/' character.
xo --wrap top/a/b/c '{:tag}' value XML: <top> <a> <b> <c> <tag>value</tag> </c> </b> </a> </top> JSON: "top": { "a": { "b": { "c": { "tag": "value" } } } }
The --open <path>
and
--close <path>
can be used to emit
hierarchical information without the matching close and open tag. This
allows a shell script to emit open tags, data, and then close tags. The
--depth
option may be used to set the depth for
indentation. The --leading-xpath
may be used to
prepend data to the XPath values used for HTML output style.
#!/bin/sh xo --open top/data xo --depth 2 '{tag}' value xo --close top/data XML: <top> <data> <tag>value</tag> </data> </top> JSON: "top": { "data": { "tag": "value" } }
The libxo
library first appeared in
FreeBSD 11.0.
libxo
was written by Phil
Shafer
<phil@freebsd.org>.
December 4, 2014 | midnightbsd-3.1 |