xpath.h

Estructura xmlXPathContext

La evaluación de la expresión se produce con respecto a un contexto.

El contexto consiste en:

  • Un nodo (el nodo de contexto).
  • Una lista de nodos (la lista de nodos de contexto).
  • Un conjunto de enlaces de variables.
  • Una biblioteca de funciones.
  • El conjunto de declaraciones de espacios de nombres en el ámbito de la expresión.

Tras el cambio a las tablas hash, esto debe ser recortado en la próxima versión binaria incompatible.

El nodo puede ser modificado cuando el contexto se pasa a libxml2 para una evaluación XPath, por lo que puede ser necesario inicializarlo de nuevo antes de la siguiente llamada.

Sintaxis

/**
 * xmlXPathContext:
 *
 * Expression evaluation occurs with respect to a context.
 * he context consists of:
 *    - a node (the context node)
 *    - a node list (the context node list)
 *    - a set of variable bindings
 *    - a function library
 *    - the set of namespace declarations in scope for the expression
 * Following the switch to hash tables, this need to be trimmed up at
 * the next binary incompatible release.
 * The node may be modified when the context is passed to libxml2
 * for an XPath evaluation so you may need to initialize it again
 * before the next call.
 */

struct _xmlXPathContext {
    xmlDocPtr doc;			/* The current document */
    xmlNodePtr node;			/* The current node */

    int nb_variables_unused;		/* unused (hash table) */
    int max_variables_unused;		/* unused (hash table) */
    xmlHashTablePtr varHash;		/* Hash table of defined variables */

    int nb_types;			/* number of defined types */
    int max_types;			/* max number of types */
    xmlXPathTypePtr types;		/* Array of defined types */

    int nb_funcs_unused;		/* unused (hash table) */
    int max_funcs_unused;		/* unused (hash table) */
    xmlHashTablePtr funcHash;		/* Hash table of defined funcs */

    int nb_axis;			/* number of defined axis */
    int max_axis;			/* max number of axis */
    xmlXPathAxisPtr axis;		/* Array of defined axis */

    /* the namespace nodes of the context node */
    xmlNsPtr *namespaces;		/* Array of namespaces */
    int nsNr;				/* number of namespace in scope */
    void *user;				/* function to free */

    /* extra variables */
    int contextSize;			/* the context size */
    int proximityPosition;		/* the proximity position */

    /* extra stuff for XPointer */
    int xptr;				/* is this an XPointer context? */
    xmlNodePtr here;			/* for here() */
    xmlNodePtr origin;			/* for origin() */

    /* the set of namespace declarations in scope for the expression */
    xmlHashTablePtr nsHash;		/* The namespaces hash table */
    xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */
    void *varLookupData;		/* variable lookup data */

    /* Possibility to link in an extra item */
    void *extra;                        /* needed for XSLT */

    /* The function name and URI when calling a function */
    const xmlChar *function;
    const xmlChar *functionURI;

    /* function lookup function and data */
    xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */
    void *funcLookupData;		/* function lookup data */

    /* temporary namespace lists kept for walking the namespace axis */
    xmlNsPtr *tmpNsList;		/* Array of namespaces */
    int tmpNsNr;			/* number of namespaces in scope */

    /* error reporting mechanism */
    void *userData;                     /* user specific data block */
    xmlStructuredErrorFunc error;       /* the callback in case of errors */
    xmlError lastError;			/* the last error */
    xmlNodePtr debugNode;		/* the source node XSLT */

    /* dictionary */
    xmlDictPtr dict;			/* dictionary if any */

    int flags;				/* flags to control compilation */

    /* Cache for reusal of XPath objects */
    void *cache;
};

Miembros

doc
El documento actual.
node
El nodo actual.
nb_variables_unused
No usado (tabla hash).
max_variables_unused
No usado (tabla hash).
varHash
Tabla hash de variables definidas.
nb_types
Número de tipos definidos.
max_types
Número máximo de tipos.
types
Array de tipos definidos.
nb_funcs_unused
No usado (tabla hash).
max_funcs_unused
No usado (tabla hash).
funcHash
Tabla hash de funciones definidas.

/* Array of defined axis */

nb_axis
Número de ejes definidos.
max_axis
Número máximo de ejes.
axis
Array de ejes definidos.

Los nodos del espacio de nombres del nodo de contexto.

namespaces
Array de espacios con nombre.
nsNr
Número de espacios con nombre en el ámbito.
user
Función para liberar.

Variables extra.

contextSize
El tamaño del contexto.
proximityPosition
La posición de proximidad.

Material extra para XPointer.

xptr
Indica si se trata de un contexto XPointer.
here
Puntero al nodo para here().
origin
Puntero al nodo para origin().

El conjunto de declaraciones de espacio con nombre en el ámbito de la expresión.

nsHash
La tabla hash de espacios con nombre.
varLookupFunc
Función de búsqueda de variables.
varLookupData
Datos de búsqueda de variables.

Possibility to link in an extra item.

extra
Necesario para XSLT.

El nombre de la función y el URI cuando se llama a una función.

function
functionURI

Función de búsqueda y datos.

funcLookupFunc
Función de búsqueda.
funcLookupData
Datos de búsqueda de la función.

Listas temporales de espacios con nombre guardadas para recorrer el eje de espacios con nombre.

tmpNsList
Array de espacios con nombre.
tmpNsNr
Número de espacios con nombre en el ámbito de aplicación.

Mecanismo de reporte de errores.

userData
Bloque de datos específicos de usuario.
error
La función de retrollamada en caso de error.
lastError
El último error.
debugNode
El nodo XSLT fuente.

Dicionario.

dict
Diccionario, si hay alguno.
flags
Banderas de control de compilación.

Caché para la reutilización de objetos XPath.

cache