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 -- Nodeset object implementation. ## 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 Nodeset object implementation. ## 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 freeing returned 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.