DragonFly On-Line Manual Pages
XO(1) DragonFly General Commands Manual XO(1)
NAME
xo - emit formatted output based on format string and arguments
SYNOPSIS
xo [-options] [argument...]
DESCRIPTION
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> Close tags for the given path
--depth <num> Set the depth for pretty printing
--help Display this help text
--html OR -H Generate HTML output
--json OR -J Generate JSON output
--leading-xpath <path>
Add a prefix to generated XPaths (HTML)
--open <path> Open tags for the given path
--pretty OR -p Make 'pretty' output (add indent, newlines)
--style <style> Generate given style (xml, json, text, html)
--text OR -T Generate text output (the default style)
--version Display version information
--warn OR -W Display warnings in text on stderr
--warn-xml Display warnings in xml on stdout
--wrap <path> Wrap output in a set of containers
--xml OR -X Generate XML output
--xpath Add XPath data to HTML output
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.
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"
}
}
EXAMPLE
% xo 'The {:product} is {:status}0 stereo "in route"
The stereo is in route
% xo -p -X 'The {:product} is {:status}0 stereo "in route"
<product>stereo</product>
<status>in route</status>
ADDITIONAL DOCUMENTATION
Complete documentation can be found on github:
http://juniper.github.io/libxo/libxo-manual.html
libxo lives on github as:
https://github.com/Juniper/libxo
The latest release of libxo is available at:
https://github.com/Juniper/libxo/releases
SEE ALSO
libxo(3), xo_emit(3)
HISTORY
The libxo library was added in FreeBSD 11.0.
AUTHOR
Phil Shafer
DragonFly 6.5-DEVELOPMENT December 4, 2014 DragonFly 6.5-DEVELOPMENT