Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
XO(1)			FreeBSD	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
	     Close tags	for the	given path

     -C	| --continuation
	     Indicates this output is a	continuation of	the previous output
	     data and should appear on the same	line.  This is allows HTML
	     output to be constructed correctly.

     --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)

	     Indicate that this	content	is not the first in a series of	sib-
	     ling objects, which is vital information for "JSON" output, which
	     requires a	comma between such objects.

     --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)

	     Indicates the entire object should	be placed inside a top-level
	     object wrapper, specifically when generating JSON output.

	     Display version information

     -W	| --warn
	     Display warnings in text on stderr

	     Display warnings in xml on	stdout

     --wrap path
	     Wrap output in a set of containers

     -X	| --xml
	     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"
	     <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

	       The fish	weighs 6 pounds.
	       "name": "fish",
	       "weight": 6
	       <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>

     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

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

	     xo	--open top/data
	     xo	--depth	2 '{tag}' value
	     xo	--close	top/data

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

FreeBSD	13.0		       December	4, 2014			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help