FreeBSD Manual Pages
XO(1) FreeBSD 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 help text -H | --html Generate HTML output -J | --json Generate JSON output --leading-xpath path Add a prefix to generated XPaths (HTML) --open path Open tags for the given path -p | --pretty Make 'pretty' output (add indent, newlines) --style style Generate given style (xml, json, text, html) -T | --text Generate text output (the default style) --version Display version information -W | --warn Display warnings in text on stderr --warn-xml Display warnings in xml on stdout --wrap path Wrap output in a set of containers -X | --xml 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. In addition, xo accepts any of the libxo options listed in xo_options(7). EXAMPLES 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 spe- cific 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 in- formation 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" } } SEE ALSO libxo(3), xo_emit(3), xo_options(7) HISTORY The libxo library first appeared in FreeBSD 11.0. AUTHORS libxo was written by Phil Shafer <phil@freebsd.org>. FreeBSD 13.0 December 4, 2014 FreeBSD 13.0
NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | SEE ALSO | HISTORY | AUTHORS
Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=xo&sektion=1&manpath=FreeBSD+12.0-RELEASE>