tail head cat sleep
QR code linking to this page

Manual Pages  — XO

NAME

xo – emit formatted output based on format string and arguments

CONTENTS

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}  stereo "in route"
  The stereo is in route
  % xo -p -X 'The {:product} is {:status}  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.  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" } }

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 <Mt phil@freebsd.org>.


XO (1) December 4, 2014

tail head cat sleep
QR code linking to this page


Please direct any comments about this manual page service to Ben Bullock. Privacy policy.

One of the advantages of using UNIX to teach an operating systems course is the sources and documentation will easily fit into a student's briefcase.
— John Lions