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

FreeBSD Manual Pages

  
 
  

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 us-
       ing 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 this help text

       --html OR -H	  Generate HTML	output

       --json OR -J	  Generate JSON	output

       --leading-xpath <path>
			  Add a	prefix to generated XPaths (HTML)

       --open <path>	  Open tags for	the given path

       --pretty	OR -p	  Make 'pretty'	output (add indent, newlines)

       --style <style>	  Generate given style (xml, json, text, html)

       --text OR -T	  Generate text	output (the default style)

       --version	  Display version information

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

       --warn-xml	  Display warnings in xml on stdout

       --wrap <path>	  Wrap output in a set of containers

       --xml OR	-X	  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.

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

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.0	       December	4, 2014				 XO(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=xo&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help