---
name: "xo_set_info"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/xo_set_info"
---

# xo\_set\_info(3)

set the field information data for libxo

## NAME

**xo\_set\_info** – set the field information data for libxo

## LIBRARY

library “libxo”

## SYNOPSIS

**#include \<libxo/xo.h\>**

*void*\

**xo\_set\_info**(*xo\_handle\_t \*handle*, *xo\_info\_t \*info*, *int count*);

## DESCRIPTION

HTML data can include additional information in attributes that begin with "data-". To enable this, three things must occur:

First the application must build an array of xo\_info\_t structures, one per tag. The array must be sorted by name, since **libxo** uses a binary search to find the entry that matches names from format instructions.

The xo\_info\_t structure is defined in ⟨libxo/xo.h⟩:

```
    typedef struct xo_info_s {
        const char *xi_name;    /* Name of the element */
        const char *xi_type;    /* Type of field */
        const char *xi_help;    /* Description of field */
    } xo_info_t;
```

Second, the application must inform **libxo** about this information using the **xo\_set\_info**() call. Like other **libxo** calls, passing NULL for the handle tells **libxo** to use the default handle.

If the *count* is -1, **libxo** will count the elements of *info*, but there must be an empty element at the end. More typically, the number is known to the application:

```
    xo_info_t info[] = {
        { "in-stock", "number", "Number of items in stock" },
        { "name", "string", "Name of the item" },
        { "on-order", "number", "Number of items on order" },
        { "sku", "string", "Stock Keeping Unit" },
        { "sold", "number", "Number of items sold" },
    };
    int info_count = (sizeof(info) / sizeof(info[0]));
    ...
    xo_set_info(NULL, info, info_count);
```

Third, the emission of info must be triggered with the XOF\_INFO flag using either the **xo\_set\_flags**() function or the “--libxo=info” command line argument.

The type and help values, if present, are emitted as the "data-type" and "data-help" attributes:

```
  <div class="data" data-tag="sku" data-type="string"
       data-help="Stock Keeping Unit">GRO-000-533</div>
```

## SEE ALSO

[xo\_emit(3)](/xo_emit/3.md), [libxo(3)](/libxo/3.md)

## HISTORY

The **libxo** library first appeared in FreeBSD 11.0.

## AUTHORS

**libxo** was written by Phil Shafer ⟨*phil@freebsd.org*⟩.
