1*d4a07e70Sfengbojiang 2*d4a07e70SfengbojiangExamples 3*d4a07e70Sfengbojiang======== 4*d4a07e70Sfengbojiang 5*d4a07e70SfengbojiangUnit Test 6*d4a07e70Sfengbojiang--------- 7*d4a07e70Sfengbojiang 8*d4a07e70SfengbojiangHere is one of the unit tests as an example:: 9*d4a07e70Sfengbojiang 10*d4a07e70Sfengbojiang int 11*d4a07e70Sfengbojiang main (int argc, char **argv) 12*d4a07e70Sfengbojiang { 13*d4a07e70Sfengbojiang static char base_grocery[] = "GRO"; 14*d4a07e70Sfengbojiang static char base_hardware[] = "HRD"; 15*d4a07e70Sfengbojiang struct item { 16*d4a07e70Sfengbojiang const char *i_title; 17*d4a07e70Sfengbojiang int i_sold; 18*d4a07e70Sfengbojiang int i_instock; 19*d4a07e70Sfengbojiang int i_onorder; 20*d4a07e70Sfengbojiang const char *i_sku_base; 21*d4a07e70Sfengbojiang int i_sku_num; 22*d4a07e70Sfengbojiang }; 23*d4a07e70Sfengbojiang struct item list[] = { 24*d4a07e70Sfengbojiang { "gum", 1412, 54, 10, base_grocery, 415 }, 25*d4a07e70Sfengbojiang { "rope", 85, 4, 2, base_hardware, 212 }, 26*d4a07e70Sfengbojiang { "ladder", 0, 2, 1, base_hardware, 517 }, 27*d4a07e70Sfengbojiang { "bolt", 4123, 144, 42, base_hardware, 632 }, 28*d4a07e70Sfengbojiang { "water", 17, 14, 2, base_grocery, 2331 }, 29*d4a07e70Sfengbojiang { NULL, 0, 0, 0, NULL, 0 } 30*d4a07e70Sfengbojiang }; 31*d4a07e70Sfengbojiang struct item list2[] = { 32*d4a07e70Sfengbojiang { "fish", 1321, 45, 1, base_grocery, 533 }, 33*d4a07e70Sfengbojiang }; 34*d4a07e70Sfengbojiang struct item *ip; 35*d4a07e70Sfengbojiang xo_info_t info[] = { 36*d4a07e70Sfengbojiang { "in-stock", "number", "Number of items in stock" }, 37*d4a07e70Sfengbojiang { "name", "string", "Name of the item" }, 38*d4a07e70Sfengbojiang { "on-order", "number", "Number of items on order" }, 39*d4a07e70Sfengbojiang { "sku", "string", "Stock Keeping Unit" }, 40*d4a07e70Sfengbojiang { "sold", "number", "Number of items sold" }, 41*d4a07e70Sfengbojiang { NULL, NULL, NULL }, 42*d4a07e70Sfengbojiang }; 43*d4a07e70Sfengbojiang int info_count = (sizeof(info) / sizeof(info[0])) - 1; 44*d4a07e70Sfengbojiang 45*d4a07e70Sfengbojiang argc = xo_parse_args(argc, argv); 46*d4a07e70Sfengbojiang if (argc < 0) 47*d4a07e70Sfengbojiang exit(EXIT_FAILURE); 48*d4a07e70Sfengbojiang 49*d4a07e70Sfengbojiang xo_set_info(NULL, info, info_count); 50*d4a07e70Sfengbojiang 51*d4a07e70Sfengbojiang xo_open_container_h(NULL, "top"); 52*d4a07e70Sfengbojiang 53*d4a07e70Sfengbojiang xo_open_container("data"); 54*d4a07e70Sfengbojiang xo_open_list("item"); 55*d4a07e70Sfengbojiang 56*d4a07e70Sfengbojiang for (ip = list; ip->i_title; ip++) { 57*d4a07e70Sfengbojiang xo_open_instance("item"); 58*d4a07e70Sfengbojiang 59*d4a07e70Sfengbojiang xo_emit("{L:Item} '{k:name/%s}':\n", ip->i_title); 60*d4a07e70Sfengbojiang xo_emit("{P: }{L:Total sold}: {n:sold/%u%s}\n", 61*d4a07e70Sfengbojiang ip->i_sold, ip->i_sold ? ".0" : ""); 62*d4a07e70Sfengbojiang xo_emit("{P: }{Lwc:In stock}{:in-stock/%u}\n", 63*d4a07e70Sfengbojiang ip->i_instock); 64*d4a07e70Sfengbojiang xo_emit("{P: }{Lwc:On order}{:on-order/%u}\n", 65*d4a07e70Sfengbojiang ip->i_onorder); 66*d4a07e70Sfengbojiang xo_emit("{P: }{L:SKU}: {q:sku/%s-000-%u}\n", 67*d4a07e70Sfengbojiang ip->i_sku_base, ip->i_sku_num); 68*d4a07e70Sfengbojiang 69*d4a07e70Sfengbojiang xo_close_instance("item"); 70*d4a07e70Sfengbojiang } 71*d4a07e70Sfengbojiang 72*d4a07e70Sfengbojiang xo_close_list("item"); 73*d4a07e70Sfengbojiang xo_close_container("data"); 74*d4a07e70Sfengbojiang 75*d4a07e70Sfengbojiang xo_open_container("data"); 76*d4a07e70Sfengbojiang xo_open_list("item"); 77*d4a07e70Sfengbojiang 78*d4a07e70Sfengbojiang for (ip = list2; ip->i_title; ip++) { 79*d4a07e70Sfengbojiang xo_open_instance("item"); 80*d4a07e70Sfengbojiang 81*d4a07e70Sfengbojiang xo_emit("{L:Item} '{:name/%s}':\n", ip->i_title); 82*d4a07e70Sfengbojiang xo_emit("{P: }{L:Total sold}: {n:sold/%u%s}\n", 83*d4a07e70Sfengbojiang ip->i_sold, ip->i_sold ? ".0" : ""); 84*d4a07e70Sfengbojiang xo_emit("{P: }{Lwc:In stock}{:in-stock/%u}\n", 85*d4a07e70Sfengbojiang ip->i_instock); 86*d4a07e70Sfengbojiang xo_emit("{P: }{Lwc:On order}{:on-order/%u}\n", 87*d4a07e70Sfengbojiang ip->i_onorder); 88*d4a07e70Sfengbojiang xo_emit("{P: }{L:SKU}: {q:sku/%s-000-%u}\n", 89*d4a07e70Sfengbojiang ip->i_sku_base, ip->i_sku_num); 90*d4a07e70Sfengbojiang 91*d4a07e70Sfengbojiang xo_close_instance("item"); 92*d4a07e70Sfengbojiang } 93*d4a07e70Sfengbojiang 94*d4a07e70Sfengbojiang xo_close_list("item"); 95*d4a07e70Sfengbojiang xo_close_container("data"); 96*d4a07e70Sfengbojiang 97*d4a07e70Sfengbojiang xo_close_container_h(NULL, "top"); 98*d4a07e70Sfengbojiang 99*d4a07e70Sfengbojiang return 0; 100*d4a07e70Sfengbojiang } 101*d4a07e70Sfengbojiang 102*d4a07e70SfengbojiangText output:: 103*d4a07e70Sfengbojiang 104*d4a07e70Sfengbojiang % ./testxo --libxo text 105*d4a07e70Sfengbojiang Item 'gum': 106*d4a07e70Sfengbojiang Total sold: 1412.0 107*d4a07e70Sfengbojiang In stock: 54 108*d4a07e70Sfengbojiang On order: 10 109*d4a07e70Sfengbojiang SKU: GRO-000-415 110*d4a07e70Sfengbojiang Item 'rope': 111*d4a07e70Sfengbojiang Total sold: 85.0 112*d4a07e70Sfengbojiang In stock: 4 113*d4a07e70Sfengbojiang On order: 2 114*d4a07e70Sfengbojiang SKU: HRD-000-212 115*d4a07e70Sfengbojiang Item 'ladder': 116*d4a07e70Sfengbojiang Total sold: 0 117*d4a07e70Sfengbojiang In stock: 2 118*d4a07e70Sfengbojiang On order: 1 119*d4a07e70Sfengbojiang SKU: HRD-000-517 120*d4a07e70Sfengbojiang Item 'bolt': 121*d4a07e70Sfengbojiang Total sold: 4123.0 122*d4a07e70Sfengbojiang In stock: 144 123*d4a07e70Sfengbojiang On order: 42 124*d4a07e70Sfengbojiang SKU: HRD-000-632 125*d4a07e70Sfengbojiang Item 'water': 126*d4a07e70Sfengbojiang Total sold: 17.0 127*d4a07e70Sfengbojiang In stock: 14 128*d4a07e70Sfengbojiang On order: 2 129*d4a07e70Sfengbojiang SKU: GRO-000-2331 130*d4a07e70Sfengbojiang Item 'fish': 131*d4a07e70Sfengbojiang Total sold: 1321.0 132*d4a07e70Sfengbojiang In stock: 45 133*d4a07e70Sfengbojiang On order: 1 134*d4a07e70Sfengbojiang SKU: GRO-000-533 135*d4a07e70Sfengbojiang 136*d4a07e70SfengbojiangJSON output:: 137*d4a07e70Sfengbojiang 138*d4a07e70Sfengbojiang % ./testxo --libxo json,pretty 139*d4a07e70Sfengbojiang "top": { 140*d4a07e70Sfengbojiang "data": { 141*d4a07e70Sfengbojiang "item": [ 142*d4a07e70Sfengbojiang { 143*d4a07e70Sfengbojiang "name": "gum", 144*d4a07e70Sfengbojiang "sold": 1412.0, 145*d4a07e70Sfengbojiang "in-stock": 54, 146*d4a07e70Sfengbojiang "on-order": 10, 147*d4a07e70Sfengbojiang "sku": "GRO-000-415" 148*d4a07e70Sfengbojiang }, 149*d4a07e70Sfengbojiang { 150*d4a07e70Sfengbojiang "name": "rope", 151*d4a07e70Sfengbojiang "sold": 85.0, 152*d4a07e70Sfengbojiang "in-stock": 4, 153*d4a07e70Sfengbojiang "on-order": 2, 154*d4a07e70Sfengbojiang "sku": "HRD-000-212" 155*d4a07e70Sfengbojiang }, 156*d4a07e70Sfengbojiang { 157*d4a07e70Sfengbojiang "name": "ladder", 158*d4a07e70Sfengbojiang "sold": 0, 159*d4a07e70Sfengbojiang "in-stock": 2, 160*d4a07e70Sfengbojiang "on-order": 1, 161*d4a07e70Sfengbojiang "sku": "HRD-000-517" 162*d4a07e70Sfengbojiang }, 163*d4a07e70Sfengbojiang { 164*d4a07e70Sfengbojiang "name": "bolt", 165*d4a07e70Sfengbojiang "sold": 4123.0, 166*d4a07e70Sfengbojiang "in-stock": 144, 167*d4a07e70Sfengbojiang "on-order": 42, 168*d4a07e70Sfengbojiang "sku": "HRD-000-632" 169*d4a07e70Sfengbojiang }, 170*d4a07e70Sfengbojiang { 171*d4a07e70Sfengbojiang "name": "water", 172*d4a07e70Sfengbojiang "sold": 17.0, 173*d4a07e70Sfengbojiang "in-stock": 14, 174*d4a07e70Sfengbojiang "on-order": 2, 175*d4a07e70Sfengbojiang "sku": "GRO-000-2331" 176*d4a07e70Sfengbojiang } 177*d4a07e70Sfengbojiang ] 178*d4a07e70Sfengbojiang }, 179*d4a07e70Sfengbojiang "data": { 180*d4a07e70Sfengbojiang "item": [ 181*d4a07e70Sfengbojiang { 182*d4a07e70Sfengbojiang "name": "fish", 183*d4a07e70Sfengbojiang "sold": 1321.0, 184*d4a07e70Sfengbojiang "in-stock": 45, 185*d4a07e70Sfengbojiang "on-order": 1, 186*d4a07e70Sfengbojiang "sku": "GRO-000-533" 187*d4a07e70Sfengbojiang } 188*d4a07e70Sfengbojiang ] 189*d4a07e70Sfengbojiang } 190*d4a07e70Sfengbojiang } 191*d4a07e70Sfengbojiang 192*d4a07e70SfengbojiangXML output:: 193*d4a07e70Sfengbojiang 194*d4a07e70Sfengbojiang % ./testxo --libxo pretty,xml 195*d4a07e70Sfengbojiang <top> 196*d4a07e70Sfengbojiang <data> 197*d4a07e70Sfengbojiang <item> 198*d4a07e70Sfengbojiang <name>gum</name> 199*d4a07e70Sfengbojiang <sold>1412.0</sold> 200*d4a07e70Sfengbojiang <in-stock>54</in-stock> 201*d4a07e70Sfengbojiang <on-order>10</on-order> 202*d4a07e70Sfengbojiang <sku>GRO-000-415</sku> 203*d4a07e70Sfengbojiang </item> 204*d4a07e70Sfengbojiang <item> 205*d4a07e70Sfengbojiang <name>rope</name> 206*d4a07e70Sfengbojiang <sold>85.0</sold> 207*d4a07e70Sfengbojiang <in-stock>4</in-stock> 208*d4a07e70Sfengbojiang <on-order>2</on-order> 209*d4a07e70Sfengbojiang <sku>HRD-000-212</sku> 210*d4a07e70Sfengbojiang </item> 211*d4a07e70Sfengbojiang <item> 212*d4a07e70Sfengbojiang <name>ladder</name> 213*d4a07e70Sfengbojiang <sold>0</sold> 214*d4a07e70Sfengbojiang <in-stock>2</in-stock> 215*d4a07e70Sfengbojiang <on-order>1</on-order> 216*d4a07e70Sfengbojiang <sku>HRD-000-517</sku> 217*d4a07e70Sfengbojiang </item> 218*d4a07e70Sfengbojiang <item> 219*d4a07e70Sfengbojiang <name>bolt</name> 220*d4a07e70Sfengbojiang <sold>4123.0</sold> 221*d4a07e70Sfengbojiang <in-stock>144</in-stock> 222*d4a07e70Sfengbojiang <on-order>42</on-order> 223*d4a07e70Sfengbojiang <sku>HRD-000-632</sku> 224*d4a07e70Sfengbojiang </item> 225*d4a07e70Sfengbojiang <item> 226*d4a07e70Sfengbojiang <name>water</name> 227*d4a07e70Sfengbojiang <sold>17.0</sold> 228*d4a07e70Sfengbojiang <in-stock>14</in-stock> 229*d4a07e70Sfengbojiang <on-order>2</on-order> 230*d4a07e70Sfengbojiang <sku>GRO-000-2331</sku> 231*d4a07e70Sfengbojiang </item> 232*d4a07e70Sfengbojiang </data> 233*d4a07e70Sfengbojiang <data> 234*d4a07e70Sfengbojiang <item> 235*d4a07e70Sfengbojiang <name>fish</name> 236*d4a07e70Sfengbojiang <sold>1321.0</sold> 237*d4a07e70Sfengbojiang <in-stock>45</in-stock> 238*d4a07e70Sfengbojiang <on-order>1</on-order> 239*d4a07e70Sfengbojiang <sku>GRO-000-533</sku> 240*d4a07e70Sfengbojiang </item> 241*d4a07e70Sfengbojiang </data> 242*d4a07e70Sfengbojiang </top> 243*d4a07e70Sfengbojiang 244*d4a07e70SfengbojiangHMTL output:: 245*d4a07e70Sfengbojiang 246*d4a07e70Sfengbojiang % ./testxo --libxo pretty,html 247*d4a07e70Sfengbojiang <div class="line"> 248*d4a07e70Sfengbojiang <div class="label">Item</div> 249*d4a07e70Sfengbojiang <div class="text"> '</div> 250*d4a07e70Sfengbojiang <div class="data" data-tag="name">gum</div> 251*d4a07e70Sfengbojiang <div class="text">':</div> 252*d4a07e70Sfengbojiang </div> 253*d4a07e70Sfengbojiang <div class="line"> 254*d4a07e70Sfengbojiang <div class="padding"> </div> 255*d4a07e70Sfengbojiang <div class="label">Total sold</div> 256*d4a07e70Sfengbojiang <div class="text">: </div> 257*d4a07e70Sfengbojiang <div class="data" data-tag="sold">1412.0</div> 258*d4a07e70Sfengbojiang </div> 259*d4a07e70Sfengbojiang <div class="line"> 260*d4a07e70Sfengbojiang <div class="padding"> </div> 261*d4a07e70Sfengbojiang <div class="label">In stock</div> 262*d4a07e70Sfengbojiang <div class="decoration">:</div> 263*d4a07e70Sfengbojiang <div class="padding"> </div> 264*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock">54</div> 265*d4a07e70Sfengbojiang </div> 266*d4a07e70Sfengbojiang <div class="line"> 267*d4a07e70Sfengbojiang <div class="padding"> </div> 268*d4a07e70Sfengbojiang <div class="label">On order</div> 269*d4a07e70Sfengbojiang <div class="decoration">:</div> 270*d4a07e70Sfengbojiang <div class="padding"> </div> 271*d4a07e70Sfengbojiang <div class="data" data-tag="on-order">10</div> 272*d4a07e70Sfengbojiang </div> 273*d4a07e70Sfengbojiang <div class="line"> 274*d4a07e70Sfengbojiang <div class="padding"> </div> 275*d4a07e70Sfengbojiang <div class="label">SKU</div> 276*d4a07e70Sfengbojiang <div class="text">: </div> 277*d4a07e70Sfengbojiang <div class="data" data-tag="sku">GRO-000-415</div> 278*d4a07e70Sfengbojiang </div> 279*d4a07e70Sfengbojiang <div class="line"> 280*d4a07e70Sfengbojiang <div class="label">Item</div> 281*d4a07e70Sfengbojiang <div class="text"> '</div> 282*d4a07e70Sfengbojiang <div class="data" data-tag="name">rope</div> 283*d4a07e70Sfengbojiang <div class="text">':</div> 284*d4a07e70Sfengbojiang </div> 285*d4a07e70Sfengbojiang <div class="line"> 286*d4a07e70Sfengbojiang <div class="padding"> </div> 287*d4a07e70Sfengbojiang <div class="label">Total sold</div> 288*d4a07e70Sfengbojiang <div class="text">: </div> 289*d4a07e70Sfengbojiang <div class="data" data-tag="sold">85.0</div> 290*d4a07e70Sfengbojiang </div> 291*d4a07e70Sfengbojiang <div class="line"> 292*d4a07e70Sfengbojiang <div class="padding"> </div> 293*d4a07e70Sfengbojiang <div class="label">In stock</div> 294*d4a07e70Sfengbojiang <div class="decoration">:</div> 295*d4a07e70Sfengbojiang <div class="padding"> </div> 296*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock">4</div> 297*d4a07e70Sfengbojiang </div> 298*d4a07e70Sfengbojiang <div class="line"> 299*d4a07e70Sfengbojiang <div class="padding"> </div> 300*d4a07e70Sfengbojiang <div class="label">On order</div> 301*d4a07e70Sfengbojiang <div class="decoration">:</div> 302*d4a07e70Sfengbojiang <div class="padding"> </div> 303*d4a07e70Sfengbojiang <div class="data" data-tag="on-order">2</div> 304*d4a07e70Sfengbojiang </div> 305*d4a07e70Sfengbojiang <div class="line"> 306*d4a07e70Sfengbojiang <div class="padding"> </div> 307*d4a07e70Sfengbojiang <div class="label">SKU</div> 308*d4a07e70Sfengbojiang <div class="text">: </div> 309*d4a07e70Sfengbojiang <div class="data" data-tag="sku">HRD-000-212</div> 310*d4a07e70Sfengbojiang </div> 311*d4a07e70Sfengbojiang <div class="line"> 312*d4a07e70Sfengbojiang <div class="label">Item</div> 313*d4a07e70Sfengbojiang <div class="text"> '</div> 314*d4a07e70Sfengbojiang <div class="data" data-tag="name">ladder</div> 315*d4a07e70Sfengbojiang <div class="text">':</div> 316*d4a07e70Sfengbojiang </div> 317*d4a07e70Sfengbojiang <div class="line"> 318*d4a07e70Sfengbojiang <div class="padding"> </div> 319*d4a07e70Sfengbojiang <div class="label">Total sold</div> 320*d4a07e70Sfengbojiang <div class="text">: </div> 321*d4a07e70Sfengbojiang <div class="data" data-tag="sold">0</div> 322*d4a07e70Sfengbojiang </div> 323*d4a07e70Sfengbojiang <div class="line"> 324*d4a07e70Sfengbojiang <div class="padding"> </div> 325*d4a07e70Sfengbojiang <div class="label">In stock</div> 326*d4a07e70Sfengbojiang <div class="decoration">:</div> 327*d4a07e70Sfengbojiang <div class="padding"> </div> 328*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock">2</div> 329*d4a07e70Sfengbojiang </div> 330*d4a07e70Sfengbojiang <div class="line"> 331*d4a07e70Sfengbojiang <div class="padding"> </div> 332*d4a07e70Sfengbojiang <div class="label">On order</div> 333*d4a07e70Sfengbojiang <div class="decoration">:</div> 334*d4a07e70Sfengbojiang <div class="padding"> </div> 335*d4a07e70Sfengbojiang <div class="data" data-tag="on-order">1</div> 336*d4a07e70Sfengbojiang </div> 337*d4a07e70Sfengbojiang <div class="line"> 338*d4a07e70Sfengbojiang <div class="padding"> </div> 339*d4a07e70Sfengbojiang <div class="label">SKU</div> 340*d4a07e70Sfengbojiang <div class="text">: </div> 341*d4a07e70Sfengbojiang <div class="data" data-tag="sku">HRD-000-517</div> 342*d4a07e70Sfengbojiang </div> 343*d4a07e70Sfengbojiang <div class="line"> 344*d4a07e70Sfengbojiang <div class="label">Item</div> 345*d4a07e70Sfengbojiang <div class="text"> '</div> 346*d4a07e70Sfengbojiang <div class="data" data-tag="name">bolt</div> 347*d4a07e70Sfengbojiang <div class="text">':</div> 348*d4a07e70Sfengbojiang </div> 349*d4a07e70Sfengbojiang <div class="line"> 350*d4a07e70Sfengbojiang <div class="padding"> </div> 351*d4a07e70Sfengbojiang <div class="label">Total sold</div> 352*d4a07e70Sfengbojiang <div class="text">: </div> 353*d4a07e70Sfengbojiang <div class="data" data-tag="sold">4123.0</div> 354*d4a07e70Sfengbojiang </div> 355*d4a07e70Sfengbojiang <div class="line"> 356*d4a07e70Sfengbojiang <div class="padding"> </div> 357*d4a07e70Sfengbojiang <div class="label">In stock</div> 358*d4a07e70Sfengbojiang <div class="decoration">:</div> 359*d4a07e70Sfengbojiang <div class="padding"> </div> 360*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock">144</div> 361*d4a07e70Sfengbojiang </div> 362*d4a07e70Sfengbojiang <div class="line"> 363*d4a07e70Sfengbojiang <div class="padding"> </div> 364*d4a07e70Sfengbojiang <div class="label">On order</div> 365*d4a07e70Sfengbojiang <div class="decoration">:</div> 366*d4a07e70Sfengbojiang <div class="padding"> </div> 367*d4a07e70Sfengbojiang <div class="data" data-tag="on-order">42</div> 368*d4a07e70Sfengbojiang </div> 369*d4a07e70Sfengbojiang <div class="line"> 370*d4a07e70Sfengbojiang <div class="padding"> </div> 371*d4a07e70Sfengbojiang <div class="label">SKU</div> 372*d4a07e70Sfengbojiang <div class="text">: </div> 373*d4a07e70Sfengbojiang <div class="data" data-tag="sku">HRD-000-632</div> 374*d4a07e70Sfengbojiang </div> 375*d4a07e70Sfengbojiang <div class="line"> 376*d4a07e70Sfengbojiang <div class="label">Item</div> 377*d4a07e70Sfengbojiang <div class="text"> '</div> 378*d4a07e70Sfengbojiang <div class="data" data-tag="name">water</div> 379*d4a07e70Sfengbojiang <div class="text">':</div> 380*d4a07e70Sfengbojiang </div> 381*d4a07e70Sfengbojiang <div class="line"> 382*d4a07e70Sfengbojiang <div class="padding"> </div> 383*d4a07e70Sfengbojiang <div class="label">Total sold</div> 384*d4a07e70Sfengbojiang <div class="text">: </div> 385*d4a07e70Sfengbojiang <div class="data" data-tag="sold">17.0</div> 386*d4a07e70Sfengbojiang </div> 387*d4a07e70Sfengbojiang <div class="line"> 388*d4a07e70Sfengbojiang <div class="padding"> </div> 389*d4a07e70Sfengbojiang <div class="label">In stock</div> 390*d4a07e70Sfengbojiang <div class="decoration">:</div> 391*d4a07e70Sfengbojiang <div class="padding"> </div> 392*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock">14</div> 393*d4a07e70Sfengbojiang </div> 394*d4a07e70Sfengbojiang <div class="line"> 395*d4a07e70Sfengbojiang <div class="padding"> </div> 396*d4a07e70Sfengbojiang <div class="label">On order</div> 397*d4a07e70Sfengbojiang <div class="decoration">:</div> 398*d4a07e70Sfengbojiang <div class="padding"> </div> 399*d4a07e70Sfengbojiang <div class="data" data-tag="on-order">2</div> 400*d4a07e70Sfengbojiang </div> 401*d4a07e70Sfengbojiang <div class="line"> 402*d4a07e70Sfengbojiang <div class="padding"> </div> 403*d4a07e70Sfengbojiang <div class="label">SKU</div> 404*d4a07e70Sfengbojiang <div class="text">: </div> 405*d4a07e70Sfengbojiang <div class="data" data-tag="sku">GRO-000-2331</div> 406*d4a07e70Sfengbojiang </div> 407*d4a07e70Sfengbojiang <div class="line"> 408*d4a07e70Sfengbojiang <div class="label">Item</div> 409*d4a07e70Sfengbojiang <div class="text"> '</div> 410*d4a07e70Sfengbojiang <div class="data" data-tag="name">fish</div> 411*d4a07e70Sfengbojiang <div class="text">':</div> 412*d4a07e70Sfengbojiang </div> 413*d4a07e70Sfengbojiang <div class="line"> 414*d4a07e70Sfengbojiang <div class="padding"> </div> 415*d4a07e70Sfengbojiang <div class="label">Total sold</div> 416*d4a07e70Sfengbojiang <div class="text">: </div> 417*d4a07e70Sfengbojiang <div class="data" data-tag="sold">1321.0</div> 418*d4a07e70Sfengbojiang </div> 419*d4a07e70Sfengbojiang <div class="line"> 420*d4a07e70Sfengbojiang <div class="padding"> </div> 421*d4a07e70Sfengbojiang <div class="label">In stock</div> 422*d4a07e70Sfengbojiang <div class="decoration">:</div> 423*d4a07e70Sfengbojiang <div class="padding"> </div> 424*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock">45</div> 425*d4a07e70Sfengbojiang </div> 426*d4a07e70Sfengbojiang <div class="line"> 427*d4a07e70Sfengbojiang <div class="padding"> </div> 428*d4a07e70Sfengbojiang <div class="label">On order</div> 429*d4a07e70Sfengbojiang <div class="decoration">:</div> 430*d4a07e70Sfengbojiang <div class="padding"> </div> 431*d4a07e70Sfengbojiang <div class="data" data-tag="on-order">1</div> 432*d4a07e70Sfengbojiang </div> 433*d4a07e70Sfengbojiang <div class="line"> 434*d4a07e70Sfengbojiang <div class="padding"> </div> 435*d4a07e70Sfengbojiang <div class="label">SKU</div> 436*d4a07e70Sfengbojiang <div class="text">: </div> 437*d4a07e70Sfengbojiang <div class="data" data-tag="sku">GRO-000-533</div> 438*d4a07e70Sfengbojiang </div> 439*d4a07e70Sfengbojiang 440*d4a07e70SfengbojiangHTML output with xpath and info flags:: 441*d4a07e70Sfengbojiang 442*d4a07e70Sfengbojiang % ./testxo --libxo pretty,html,xpath,info 443*d4a07e70Sfengbojiang <div class="line"> 444*d4a07e70Sfengbojiang <div class="label">Item</div> 445*d4a07e70Sfengbojiang <div class="text"> '</div> 446*d4a07e70Sfengbojiang <div class="data" data-tag="name" 447*d4a07e70Sfengbojiang data-xpath="/top/data/item/name" data-type="string" 448*d4a07e70Sfengbojiang data-help="Name of the item">gum</div> 449*d4a07e70Sfengbojiang <div class="text">':</div> 450*d4a07e70Sfengbojiang </div> 451*d4a07e70Sfengbojiang <div class="line"> 452*d4a07e70Sfengbojiang <div class="padding"> </div> 453*d4a07e70Sfengbojiang <div class="label">Total sold</div> 454*d4a07e70Sfengbojiang <div class="text">: </div> 455*d4a07e70Sfengbojiang <div class="data" data-tag="sold" 456*d4a07e70Sfengbojiang data-xpath="/top/data/item/sold" data-type="number" 457*d4a07e70Sfengbojiang data-help="Number of items sold">1412.0</div> 458*d4a07e70Sfengbojiang </div> 459*d4a07e70Sfengbojiang <div class="line"> 460*d4a07e70Sfengbojiang <div class="padding"> </div> 461*d4a07e70Sfengbojiang <div class="label">In stock</div> 462*d4a07e70Sfengbojiang <div class="decoration">:</div> 463*d4a07e70Sfengbojiang <div class="padding"> </div> 464*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock" 465*d4a07e70Sfengbojiang data-xpath="/top/data/item/in-stock" data-type="number" 466*d4a07e70Sfengbojiang data-help="Number of items in stock">54</div> 467*d4a07e70Sfengbojiang </div> 468*d4a07e70Sfengbojiang <div class="line"> 469*d4a07e70Sfengbojiang <div class="padding"> </div> 470*d4a07e70Sfengbojiang <div class="label">On order</div> 471*d4a07e70Sfengbojiang <div class="decoration">:</div> 472*d4a07e70Sfengbojiang <div class="padding"> </div> 473*d4a07e70Sfengbojiang <div class="data" data-tag="on-order" 474*d4a07e70Sfengbojiang data-xpath="/top/data/item/on-order" data-type="number" 475*d4a07e70Sfengbojiang data-help="Number of items on order">10</div> 476*d4a07e70Sfengbojiang </div> 477*d4a07e70Sfengbojiang <div class="line"> 478*d4a07e70Sfengbojiang <div class="padding"> </div> 479*d4a07e70Sfengbojiang <div class="label">SKU</div> 480*d4a07e70Sfengbojiang <div class="text">: </div> 481*d4a07e70Sfengbojiang <div class="data" data-tag="sku" 482*d4a07e70Sfengbojiang data-xpath="/top/data/item/sku" data-type="string" 483*d4a07e70Sfengbojiang data-help="Stock Keeping Unit">GRO-000-415</div> 484*d4a07e70Sfengbojiang </div> 485*d4a07e70Sfengbojiang <div class="line"> 486*d4a07e70Sfengbojiang <div class="label">Item</div> 487*d4a07e70Sfengbojiang <div class="text"> '</div> 488*d4a07e70Sfengbojiang <div class="data" data-tag="name" 489*d4a07e70Sfengbojiang data-xpath="/top/data/item/name" data-type="string" 490*d4a07e70Sfengbojiang data-help="Name of the item">rope</div> 491*d4a07e70Sfengbojiang <div class="text">':</div> 492*d4a07e70Sfengbojiang </div> 493*d4a07e70Sfengbojiang <div class="line"> 494*d4a07e70Sfengbojiang <div class="padding"> </div> 495*d4a07e70Sfengbojiang <div class="label">Total sold</div> 496*d4a07e70Sfengbojiang <div class="text">: </div> 497*d4a07e70Sfengbojiang <div class="data" data-tag="sold" 498*d4a07e70Sfengbojiang data-xpath="/top/data/item/sold" data-type="number" 499*d4a07e70Sfengbojiang data-help="Number of items sold">85.0</div> 500*d4a07e70Sfengbojiang </div> 501*d4a07e70Sfengbojiang <div class="line"> 502*d4a07e70Sfengbojiang <div class="padding"> </div> 503*d4a07e70Sfengbojiang <div class="label">In stock</div> 504*d4a07e70Sfengbojiang <div class="decoration">:</div> 505*d4a07e70Sfengbojiang <div class="padding"> </div> 506*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock" 507*d4a07e70Sfengbojiang data-xpath="/top/data/item/in-stock" data-type="number" 508*d4a07e70Sfengbojiang data-help="Number of items in stock">4</div> 509*d4a07e70Sfengbojiang </div> 510*d4a07e70Sfengbojiang <div class="line"> 511*d4a07e70Sfengbojiang <div class="padding"> </div> 512*d4a07e70Sfengbojiang <div class="label">On order</div> 513*d4a07e70Sfengbojiang <div class="decoration">:</div> 514*d4a07e70Sfengbojiang <div class="padding"> </div> 515*d4a07e70Sfengbojiang <div class="data" data-tag="on-order" 516*d4a07e70Sfengbojiang data-xpath="/top/data/item/on-order" data-type="number" 517*d4a07e70Sfengbojiang data-help="Number of items on order">2</div> 518*d4a07e70Sfengbojiang </div> 519*d4a07e70Sfengbojiang <div class="line"> 520*d4a07e70Sfengbojiang <div class="padding"> </div> 521*d4a07e70Sfengbojiang <div class="label">SKU</div> 522*d4a07e70Sfengbojiang <div class="text">: </div> 523*d4a07e70Sfengbojiang <div class="data" data-tag="sku" 524*d4a07e70Sfengbojiang data-xpath="/top/data/item/sku" data-type="string" 525*d4a07e70Sfengbojiang data-help="Stock Keeping Unit">HRD-000-212</div> 526*d4a07e70Sfengbojiang </div> 527*d4a07e70Sfengbojiang <div class="line"> 528*d4a07e70Sfengbojiang <div class="label">Item</div> 529*d4a07e70Sfengbojiang <div class="text"> '</div> 530*d4a07e70Sfengbojiang <div class="data" data-tag="name" 531*d4a07e70Sfengbojiang data-xpath="/top/data/item/name" data-type="string" 532*d4a07e70Sfengbojiang data-help="Name of the item">ladder</div> 533*d4a07e70Sfengbojiang <div class="text">':</div> 534*d4a07e70Sfengbojiang </div> 535*d4a07e70Sfengbojiang <div class="line"> 536*d4a07e70Sfengbojiang <div class="padding"> </div> 537*d4a07e70Sfengbojiang <div class="label">Total sold</div> 538*d4a07e70Sfengbojiang <div class="text">: </div> 539*d4a07e70Sfengbojiang <div class="data" data-tag="sold" 540*d4a07e70Sfengbojiang data-xpath="/top/data/item/sold" data-type="number" 541*d4a07e70Sfengbojiang data-help="Number of items sold">0</div> 542*d4a07e70Sfengbojiang </div> 543*d4a07e70Sfengbojiang <div class="line"> 544*d4a07e70Sfengbojiang <div class="padding"> </div> 545*d4a07e70Sfengbojiang <div class="label">In stock</div> 546*d4a07e70Sfengbojiang <div class="decoration">:</div> 547*d4a07e70Sfengbojiang <div class="padding"> </div> 548*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock" 549*d4a07e70Sfengbojiang data-xpath="/top/data/item/in-stock" data-type="number" 550*d4a07e70Sfengbojiang data-help="Number of items in stock">2</div> 551*d4a07e70Sfengbojiang </div> 552*d4a07e70Sfengbojiang <div class="line"> 553*d4a07e70Sfengbojiang <div class="padding"> </div> 554*d4a07e70Sfengbojiang <div class="label">On order</div> 555*d4a07e70Sfengbojiang <div class="decoration">:</div> 556*d4a07e70Sfengbojiang <div class="padding"> </div> 557*d4a07e70Sfengbojiang <div class="data" data-tag="on-order" 558*d4a07e70Sfengbojiang data-xpath="/top/data/item/on-order" data-type="number" 559*d4a07e70Sfengbojiang data-help="Number of items on order">1</div> 560*d4a07e70Sfengbojiang </div> 561*d4a07e70Sfengbojiang <div class="line"> 562*d4a07e70Sfengbojiang <div class="padding"> </div> 563*d4a07e70Sfengbojiang <div class="label">SKU</div> 564*d4a07e70Sfengbojiang <div class="text">: </div> 565*d4a07e70Sfengbojiang <div class="data" data-tag="sku" 566*d4a07e70Sfengbojiang data-xpath="/top/data/item/sku" data-type="string" 567*d4a07e70Sfengbojiang data-help="Stock Keeping Unit">HRD-000-517</div> 568*d4a07e70Sfengbojiang </div> 569*d4a07e70Sfengbojiang <div class="line"> 570*d4a07e70Sfengbojiang <div class="label">Item</div> 571*d4a07e70Sfengbojiang <div class="text"> '</div> 572*d4a07e70Sfengbojiang <div class="data" data-tag="name" 573*d4a07e70Sfengbojiang data-xpath="/top/data/item/name" data-type="string" 574*d4a07e70Sfengbojiang data-help="Name of the item">bolt</div> 575*d4a07e70Sfengbojiang <div class="text">':</div> 576*d4a07e70Sfengbojiang </div> 577*d4a07e70Sfengbojiang <div class="line"> 578*d4a07e70Sfengbojiang <div class="padding"> </div> 579*d4a07e70Sfengbojiang <div class="label">Total sold</div> 580*d4a07e70Sfengbojiang <div class="text">: </div> 581*d4a07e70Sfengbojiang <div class="data" data-tag="sold" 582*d4a07e70Sfengbojiang data-xpath="/top/data/item/sold" data-type="number" 583*d4a07e70Sfengbojiang data-help="Number of items sold">4123.0</div> 584*d4a07e70Sfengbojiang </div> 585*d4a07e70Sfengbojiang <div class="line"> 586*d4a07e70Sfengbojiang <div class="padding"> </div> 587*d4a07e70Sfengbojiang <div class="label">In stock</div> 588*d4a07e70Sfengbojiang <div class="decoration">:</div> 589*d4a07e70Sfengbojiang <div class="padding"> </div> 590*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock" 591*d4a07e70Sfengbojiang data-xpath="/top/data/item/in-stock" data-type="number" 592*d4a07e70Sfengbojiang data-help="Number of items in stock">144</div> 593*d4a07e70Sfengbojiang </div> 594*d4a07e70Sfengbojiang <div class="line"> 595*d4a07e70Sfengbojiang <div class="padding"> </div> 596*d4a07e70Sfengbojiang <div class="label">On order</div> 597*d4a07e70Sfengbojiang <div class="decoration">:</div> 598*d4a07e70Sfengbojiang <div class="padding"> </div> 599*d4a07e70Sfengbojiang <div class="data" data-tag="on-order" 600*d4a07e70Sfengbojiang data-xpath="/top/data/item/on-order" data-type="number" 601*d4a07e70Sfengbojiang data-help="Number of items on order">42</div> 602*d4a07e70Sfengbojiang </div> 603*d4a07e70Sfengbojiang <div class="line"> 604*d4a07e70Sfengbojiang <div class="padding"> </div> 605*d4a07e70Sfengbojiang <div class="label">SKU</div> 606*d4a07e70Sfengbojiang <div class="text">: </div> 607*d4a07e70Sfengbojiang <div class="data" data-tag="sku" 608*d4a07e70Sfengbojiang data-xpath="/top/data/item/sku" data-type="string" 609*d4a07e70Sfengbojiang data-help="Stock Keeping Unit">HRD-000-632</div> 610*d4a07e70Sfengbojiang </div> 611*d4a07e70Sfengbojiang <div class="line"> 612*d4a07e70Sfengbojiang <div class="label">Item</div> 613*d4a07e70Sfengbojiang <div class="text"> '</div> 614*d4a07e70Sfengbojiang <div class="data" data-tag="name" 615*d4a07e70Sfengbojiang data-xpath="/top/data/item/name" data-type="string" 616*d4a07e70Sfengbojiang data-help="Name of the item">water</div> 617*d4a07e70Sfengbojiang <div class="text">':</div> 618*d4a07e70Sfengbojiang </div> 619*d4a07e70Sfengbojiang <div class="line"> 620*d4a07e70Sfengbojiang <div class="padding"> </div> 621*d4a07e70Sfengbojiang <div class="label">Total sold</div> 622*d4a07e70Sfengbojiang <div class="text">: </div> 623*d4a07e70Sfengbojiang <div class="data" data-tag="sold" 624*d4a07e70Sfengbojiang data-xpath="/top/data/item/sold" data-type="number" 625*d4a07e70Sfengbojiang data-help="Number of items sold">17.0</div> 626*d4a07e70Sfengbojiang </div> 627*d4a07e70Sfengbojiang <div class="line"> 628*d4a07e70Sfengbojiang <div class="padding"> </div> 629*d4a07e70Sfengbojiang <div class="label">In stock</div> 630*d4a07e70Sfengbojiang <div class="decoration">:</div> 631*d4a07e70Sfengbojiang <div class="padding"> </div> 632*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock" 633*d4a07e70Sfengbojiang data-xpath="/top/data/item/in-stock" data-type="number" 634*d4a07e70Sfengbojiang data-help="Number of items in stock">14</div> 635*d4a07e70Sfengbojiang </div> 636*d4a07e70Sfengbojiang <div class="line"> 637*d4a07e70Sfengbojiang <div class="padding"> </div> 638*d4a07e70Sfengbojiang <div class="label">On order</div> 639*d4a07e70Sfengbojiang <div class="decoration">:</div> 640*d4a07e70Sfengbojiang <div class="padding"> </div> 641*d4a07e70Sfengbojiang <div class="data" data-tag="on-order" 642*d4a07e70Sfengbojiang data-xpath="/top/data/item/on-order" data-type="number" 643*d4a07e70Sfengbojiang data-help="Number of items on order">2</div> 644*d4a07e70Sfengbojiang </div> 645*d4a07e70Sfengbojiang <div class="line"> 646*d4a07e70Sfengbojiang <div class="padding"> </div> 647*d4a07e70Sfengbojiang <div class="label">SKU</div> 648*d4a07e70Sfengbojiang <div class="text">: </div> 649*d4a07e70Sfengbojiang <div class="data" data-tag="sku" 650*d4a07e70Sfengbojiang data-xpath="/top/data/item/sku" data-type="string" 651*d4a07e70Sfengbojiang data-help="Stock Keeping Unit">GRO-000-2331</div> 652*d4a07e70Sfengbojiang </div> 653*d4a07e70Sfengbojiang <div class="line"> 654*d4a07e70Sfengbojiang <div class="label">Item</div> 655*d4a07e70Sfengbojiang <div class="text"> '</div> 656*d4a07e70Sfengbojiang <div class="data" data-tag="name" 657*d4a07e70Sfengbojiang data-xpath="/top/data/item/name" data-type="string" 658*d4a07e70Sfengbojiang data-help="Name of the item">fish</div> 659*d4a07e70Sfengbojiang <div class="text">':</div> 660*d4a07e70Sfengbojiang </div> 661*d4a07e70Sfengbojiang <div class="line"> 662*d4a07e70Sfengbojiang <div class="padding"> </div> 663*d4a07e70Sfengbojiang <div class="label">Total sold</div> 664*d4a07e70Sfengbojiang <div class="text">: </div> 665*d4a07e70Sfengbojiang <div class="data" data-tag="sold" 666*d4a07e70Sfengbojiang data-xpath="/top/data/item/sold" data-type="number" 667*d4a07e70Sfengbojiang data-help="Number of items sold">1321.0</div> 668*d4a07e70Sfengbojiang </div> 669*d4a07e70Sfengbojiang <div class="line"> 670*d4a07e70Sfengbojiang <div class="padding"> </div> 671*d4a07e70Sfengbojiang <div class="label">In stock</div> 672*d4a07e70Sfengbojiang <div class="decoration">:</div> 673*d4a07e70Sfengbojiang <div class="padding"> </div> 674*d4a07e70Sfengbojiang <div class="data" data-tag="in-stock" 675*d4a07e70Sfengbojiang data-xpath="/top/data/item/in-stock" data-type="number" 676*d4a07e70Sfengbojiang data-help="Number of items in stock">45</div> 677*d4a07e70Sfengbojiang </div> 678*d4a07e70Sfengbojiang <div class="line"> 679*d4a07e70Sfengbojiang <div class="padding"> </div> 680*d4a07e70Sfengbojiang <div class="label">On order</div> 681*d4a07e70Sfengbojiang <div class="decoration">:</div> 682*d4a07e70Sfengbojiang <div class="padding"> </div> 683*d4a07e70Sfengbojiang <div class="data" data-tag="on-order" 684*d4a07e70Sfengbojiang data-xpath="/top/data/item/on-order" data-type="number" 685*d4a07e70Sfengbojiang data-help="Number of items on order">1</div> 686*d4a07e70Sfengbojiang </div> 687*d4a07e70Sfengbojiang <div class="line"> 688*d4a07e70Sfengbojiang <div class="padding"> </div> 689*d4a07e70Sfengbojiang <div class="label">SKU</div> 690*d4a07e70Sfengbojiang <div class="text">: </div> 691*d4a07e70Sfengbojiang <div class="data" data-tag="sku" 692*d4a07e70Sfengbojiang data-xpath="/top/data/item/sku" data-type="string" 693*d4a07e70Sfengbojiang data-help="Stock Keeping Unit">GRO-000-533</div> 694*d4a07e70Sfengbojiang </div> 695