# Admin Guide

## Overview

This is a module implementing functions and pseudo-variables for XML operations.

## Dependencies

### Kamailio Modules

The following modules must be loaded before this module:

- none.

### External Libraries or Applications

The following libraries or applications must be installed before running kamailio with this module loaded:

- libxml - for compilation from source, the development headers from this library are needed as well.

## Parameters

### `buf_size` (integer)

Maximum size of the XML buffer.

Default value is 4096.

#### Set `buf_size` parameter

    ...
    modparam("xmlops", "buf_size", 8192)
    ...

### `xml_ns` (str)

Register xml namespace prefix. Parameter value must have the format: 'prefix=uri'. It can be set many times to cope with multiple namespaces without prefix.

This is useful when it is needed to access XML documents that specify xmlns without prefix, which is not XML-standard compliant, but it comes with SIP SIMPLE presence bodies.

#### Set `xml_ns` parameter

    ...
    modparam("xmlops", "xml_ns", "rpid=urn:ietf:params:xml:ns:pidf:rpid")
    modparam("xmlops", "xml_ns", "pidf=urn:ietf:params:xml:ns:pidf")
    ...
    $xml(x=>doc) = '<?xml version="1.0" encoding="utf-8"?>
        <presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:test@mydomain.com">
            <tuple id="86ae65b7-42de-4399-b635-295caad13aac">
                <status><basic>none</basic></status>
            </tuple>
        </presence>';

    xinfo("status: $xml(x=>xpath:/pidf:presence/pidf:tuple/pidf:status/pidf:basic)\n");
    ...

## Pseudo-Variables

### `$xml(name=>spec)`

Pseudo-variable for XML document operations using xpath syntax. For more see the Pseudo-Variables Cookbook.

#### `xml` usage

    ...
    $xml(x=>doc)
        = '<?xml version="1.0" encoding="UTF-8"?><a><b>test</b></a>';
    xlog("content of node b: $xml(x=>xpath:/a/b/text())\n");
    $xml(x=>xpath:/a/b) = "1234";
    ...