home | help
XO(1)			     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>

     --depth <num>

     --help

     --html OR -H

     --json OR -J

     --leading-xpath <path>

     --open <path>

     --pretty OR -p

     --style <style>

     --text OR -T

     --version

     --warn OR -W

     --warn-xml

     --wrap <path>

     --xml OR -X

     --xpath

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

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>

SEE ALSO
     libxo(3), xo_emit(3)

ADDITIONAL DOCUMENTATION
     FreeBSD uses libxo version 0.6.1.	Complete documentation can be  found  on
     github:

	   http://juniper.github.io/libxo/0.6.1/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

HISTORY
     The libxo library was added in FreeBSD 11.0.

AUTHOR
     Phil Shafer

FreeBSD ports 15.quarterly	December 4, 2014			   XO(1)

home | help