man.bsd.lv manual page server

Manual Page Search Parameters

XO(1) General Commands Manual XO(1)

xoemit 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 , , or using the same commands that emit text output.
path
Close tags for the given path
num
Set the depth for pretty printing
Display help text
|
Generate HTML output
|
Generate JSON output
path
Add a prefix to generated XPaths (HTML)
path
Open tags for the given path
|
Make 'pretty' output (add indent, newlines)
style
Generate given style (xml, json, text, html)
|
Generate text output (the default style)
Display version information
|
Display warnings in text on stderr
Display warnings in xml on stdout
path
Wrap output in a set of containers
|
Generate XML output
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).

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"
      }
    }

libxo(3), xo_emit(3), xo_options(7)

The libxo library first appeared in FreeBSD 11.0.

libxo was written by Phil Shafer <phil@freebsd.org>.

December 4, 2014 FreeBSD-12.0