- Home
- Download
- News
- Documentation

- FAQ
- Tutorial
- API reference
- Examples

- XML Digital Signature

- Online Verifier

- XML Encryption
- XML Canonicalization
- Reporting Bugs
- Mailing list
- Related
- Authors

# nodeset

## Name

nodeset --

## Synopsis

    enum        xmlSecNodeSetType;
    enum        xmlSecNodeSetOp;
    struct      xmlSecNodeSet;
    int         (*xmlSecNodeSetWalkCallback)    (xmlSecNodeSetPtr nset,
                                                 xmlNodePtr cur,
                                                 xmlNodePtr parent,
                                                 void *data);
    xmlSecNodeSetPtr xmlSecNodeSetCreate        (xmlDocPtr doc,
                                                 xmlNodeSetPtr nodes,
                                                 xmlSecNodeSetType type);
    void        xmlSecNodeSetDestroy            (xmlSecNodeSetPtr nset);
    void        xmlSecNodeSetDocDestroy         (xmlSecNodeSetPtr nset);
    int         xmlSecNodeSetContains           (xmlSecNodeSetPtr nset,
                                                 xmlNodePtr node,
                                                 xmlNodePtr parent);
    xmlSecNodeSetPtr xmlSecNodeSetAdd           (xmlSecNodeSetPtr nset,
                                                 xmlSecNodeSetPtr newNSet,
                                                 xmlSecNodeSetOp op);
    xmlSecNodeSetPtr xmlSecNodeSetAddList       (xmlSecNodeSetPtr nset,
                                                 xmlSecNodeSetPtr newNSet,
                                                 xmlSecNodeSetOp op);
    xmlSecNodeSetPtr xmlSecNodeSetGetChildren   (xmlDocPtr doc,
                                                 const xmlNodePtr parent,
                                                 int withComments,
                                                 int invert);
    int         xmlSecNodeSetWalk               (xmlSecNodeSetPtr nset,
                                                 xmlSecNodeSetWalkCallback walkFunc,
                                                 void *data);
    int         xmlSecNodeSetDumpTextNodes      (xmlSecNodeSetPtr nset,
                                                 xmlOutputBufferPtr out);
    void        xmlSecNodeSetDebugDump          (xmlSecNodeSetPtr nset,
                                                 FILE *output);

## Description

## Details

### enum xmlSecNodeSetType

    typedef enum {
        xmlSecNodeSetNormal = 0,
        xmlSecNodeSetInvert,
        xmlSecNodeSetTree,
        xmlSecNodeSetTreeWithoutComments,
        xmlSecNodeSetTreeInvert,
        xmlSecNodeSetTreeWithoutCommentsInvert,
        xmlSecNodeSetList
    } xmlSecNodeSetType;

The basic nodes sets types.

xmlSecNodeSetNormal | nodes set = nodes in the list.
xmlSecNodeSetInvert | nodes set = all document nodes minus nodes in the list.
xmlSecNodeSetTree | nodes set = nodes in the list and all their subtress.
xmlSecNodeSetTreeWithoutComments | nodes set = nodes in the list and all their subtress but no comment nodes.
xmlSecNodeSetTreeInvert | nodes set = all document nodes minus nodes in the list and all their subtress.
xmlSecNodeSetTreeWithoutCommentsInvert | nodes set = all document nodes minus (nodes in the list and all their subtress plus all comment nodes).
xmlSecNodeSetList | nodes set = all nodes in the chidren list of nodes sets.

### enum xmlSecNodeSetOp

    typedef enum {
        xmlSecNodeSetIntersection = 0,
        xmlSecNodeSetSubtraction,
        xmlSecNodeSetUnion
    } xmlSecNodeSetOp;

The simple nodes sets operations.

xmlSecNodeSetIntersection | intersection.
xmlSecNodeSetSubtraction | subtraction.
xmlSecNodeSetUnion | union.

### struct xmlSecNodeSet

    struct xmlSecNodeSet {

        xmlNodeSetPtr	nodes;
        xmlDocPtr		doc;
        int			destroyDoc;
        xmlSecNodeSetType	type;
        xmlSecNodeSetOp	op;
        xmlSecNodeSetPtr	next;
        xmlSecNodeSetPtr	prev;
        xmlSecNodeSetPtr	children;
    };

The enchanced nodes set.

xmlNodeSetPtr `nodes` | the nodes list.
xmlDocPtr `doc` | the parent XML document.
int `destroyDoc` | the flag: if set to 1 then doc will be destroyed when node set is destroyed.
xmlSecNodeSetType `type` | the nodes set type.
xmlSecNodeSetOp `op` | the operation type.
xmlSecNodeSetPtr `next` | the next nodes set.
xmlSecNodeSetPtr `prev` | the previous nodes set.
xmlSecNodeSetPtr `children` | the children list (valid only if type equal to xmlSecNodeSetList).

### xmlSecNodeSetWalkCallback ()

    int         (*xmlSecNodeSetWalkCallback)    (xmlSecNodeSetPtr nset,
                                                 xmlNodePtr cur,
                                                 xmlNodePtr parent,
                                                 void *data);

The callback function called once per each node in the nodes set.

nset : | the pointer to xmlSecNodeSet structure.
cur : | the pointer current XML node.
parent : | the pointer to the cur parent node.
data : | the pointer to application specific data.
Returns : | 0 on success or a negative value if an error occurs an walk procedure should be interrupted.

### xmlSecNodeSetCreate ()

    xmlSecNodeSetPtr xmlSecNodeSetCreate        (xmlDocPtr doc,
                                                 xmlNodeSetPtr nodes,
                                                 xmlSecNodeSetType type);

Creates new nodes set. Caller is responsible for freeng returend object by calling xmlSecNodeSetDestroy function.

doc : | the pointer to parent XML document.
nodes : | the list of nodes.
type : | the nodes set type.
Returns : | pointer to newly allocated node set or NULL if an error occurs.

### xmlSecNodeSetDestroy ()

    void        xmlSecNodeSetDestroy            (xmlSecNodeSetPtr nset);

Destroys the nodes set created with xmlSecNodeSetCreate function.

nset : | the pointer to node set.

### xmlSecNodeSetDocDestroy ()

    void        xmlSecNodeSetDocDestroy         (xmlSecNodeSetPtr nset);

Instructs node set to destroy nodes parent doc when node set is destroyed.

nset : | the pointer to node set.

### xmlSecNodeSetContains ()

    int         xmlSecNodeSetContains           (xmlSecNodeSetPtr nset,
                                                 xmlNodePtr node,
                                                 xmlNodePtr parent);

Checks whether the node is in the nodes set or not.

nset : | the pointer to node set.
node : | the pointer to XML node to check.
parent : | the pointer to node parent node.
Returns : | 1 if the node is in the nodes set nset, 0 if it is not and a negative value if an error occurs.

### xmlSecNodeSetAdd ()

    xmlSecNodeSetPtr xmlSecNodeSetAdd           (xmlSecNodeSetPtr nset,
                                                 xmlSecNodeSetPtr newNSet,
                                                 xmlSecNodeSetOp op);

Adds newNSet to the nset using operation op.

nset : | the pointer to currrent nodes set (or NULL).
newNSet : | the pointer to new nodes set.
op : | the operation type.
Returns : | the pointer to combined nodes set or NULL if an error occurs.

### xmlSecNodeSetAddList ()

    xmlSecNodeSetPtr xmlSecNodeSetAddList       (xmlSecNodeSetPtr nset,
                                                 xmlSecNodeSetPtr newNSet,
                                                 xmlSecNodeSetOp op);

Adds newNSet to the nset as child using operation op.

nset : | the pointer to currrent nodes set (or NULL).
newNSet : | the pointer to new nodes set.
op : | the operation type.
Returns : | the pointer to combined nodes set or NULL if an error occurs.

### xmlSecNodeSetGetChildren ()

    xmlSecNodeSetPtr xmlSecNodeSetGetChildren   (xmlDocPtr doc,
                                                 const xmlNodePtr parent,
                                                 int withComments,
                                                 int invert);

Creates a new nodes set that contains: - if withComments is not 0 and invert is 0: all nodes in the parent subtree; - if withComments is 0 and invert is 0: all nodes in the parent subtree except comment nodes; - if withComments is not 0 and invert not is 0: all nodes in the doc except nodes in the parent subtree; - if withComments is 0 and invert is 0: all nodes in the doc except nodes in the parent subtree and comment nodes.

doc : | the pointer to an XML document.
parent : | the pointer to parent XML node or NULL if we want to include all document nodes.
withComments : | the flag include comments or not.
invert : | the "invert" flag.
Returns : | pointer to the newly created xmlSecNodeSet structure or NULL if an error occurs.

### xmlSecNodeSetWalk ()

    int         xmlSecNodeSetWalk               (xmlSecNodeSetPtr nset,
                                                 xmlSecNodeSetWalkCallback walkFunc,
                                                 void *data);

Calls the function walkFunc once per each node in the nodes set nset. If the walkFunc returns a negative value, then the walk procedure is interrupted.

nset : | the pointer to node set.
walkFunc : | the callback functions.
data : | the application specific data passed to the walkFunc.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecNodeSetDumpTextNodes ()

    int         xmlSecNodeSetDumpTextNodes      (xmlSecNodeSetPtr nset,
                                                 xmlOutputBufferPtr out);

Dumps content of all the text nodes from nset to out.

nset : | the pointer to node set.
out : | the output buffer.
Returns : | 0 on success or a negative value otherwise.

### xmlSecNodeSetDebugDump ()

    void        xmlSecNodeSetDebugDump          (xmlSecNodeSetPtr nset,
                                                 FILE *output);

Prints information about nset to the output.

nset : | the pointer to node set.
output : | the pointer to output FILE.