2011-08-25 19:08:55 +08:00
|
|
|
/*
|
|
|
|
* Summary: API to handle XML Pointers
|
|
|
|
* Description: API to handle XML Pointers
|
|
|
|
* Base implementation was made accordingly to
|
|
|
|
* W3C Candidate Recommendation 7 June 2000
|
|
|
|
* http://www.w3.org/TR/2000/CR-xptr-20000607
|
|
|
|
*
|
|
|
|
* Added support for the element() scheme described in:
|
|
|
|
* W3C Proposed Recommendation 13 November 2002
|
|
|
|
* http://www.w3.org/TR/2002/PR-xptr-element-20021113/
|
|
|
|
*
|
|
|
|
* Copy: See Copyright for the status of this software.
|
|
|
|
*
|
|
|
|
* Author: Daniel Veillard
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __XML_XPTR_H__
|
|
|
|
#define __XML_XPTR_H__
|
|
|
|
|
|
|
|
#include <libxml/xmlversion.h>
|
|
|
|
|
|
|
|
#ifdef LIBXML_XPTR_ENABLED
|
|
|
|
|
|
|
|
#include <libxml/tree.h>
|
|
|
|
#include <libxml/xpath.h>
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* A Location Set
|
|
|
|
*/
|
|
|
|
typedef struct _xmlLocationSet xmlLocationSet;
|
|
|
|
typedef xmlLocationSet *xmlLocationSetPtr;
|
|
|
|
struct _xmlLocationSet {
|
2012-04-19 14:35:52 +08:00
|
|
|
int locNr; /* number of locations in the set */
|
|
|
|
int locMax; /* size of the array as allocated */
|
2011-08-25 19:08:55 +08:00
|
|
|
xmlXPathObjectPtr *locTab;/* array of locations */
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Handling of location sets.
|
|
|
|
*/
|
|
|
|
|
2012-04-19 14:35:52 +08:00
|
|
|
XMLPUBFUN xmlLocationSetPtr XMLCALL
|
|
|
|
xmlXPtrLocationSetCreate (xmlXPathObjectPtr val);
|
|
|
|
XMLPUBFUN void XMLCALL
|
|
|
|
xmlXPtrFreeLocationSet (xmlLocationSetPtr obj);
|
|
|
|
XMLPUBFUN xmlLocationSetPtr XMLCALL
|
|
|
|
xmlXPtrLocationSetMerge (xmlLocationSetPtr val1,
|
|
|
|
xmlLocationSetPtr val2);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewRange (xmlNodePtr start,
|
|
|
|
int startindex,
|
|
|
|
xmlNodePtr end,
|
|
|
|
int endindex);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewRangePoints (xmlXPathObjectPtr start,
|
|
|
|
xmlXPathObjectPtr end);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewRangeNodePoint (xmlNodePtr start,
|
|
|
|
xmlXPathObjectPtr end);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewRangePointNode (xmlXPathObjectPtr start,
|
|
|
|
xmlNodePtr end);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewRangeNodes (xmlNodePtr start,
|
|
|
|
xmlNodePtr end);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewLocationSetNodes (xmlNodePtr start,
|
|
|
|
xmlNodePtr end);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewRangeNodeObject (xmlNodePtr start,
|
|
|
|
xmlXPathObjectPtr end);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrNewCollapsedRange (xmlNodePtr start);
|
|
|
|
XMLPUBFUN void XMLCALL
|
|
|
|
xmlXPtrLocationSetAdd (xmlLocationSetPtr cur,
|
|
|
|
xmlXPathObjectPtr val);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrWrapLocationSet (xmlLocationSetPtr val);
|
|
|
|
XMLPUBFUN void XMLCALL
|
|
|
|
xmlXPtrLocationSetDel (xmlLocationSetPtr cur,
|
|
|
|
xmlXPathObjectPtr val);
|
|
|
|
XMLPUBFUN void XMLCALL
|
|
|
|
xmlXPtrLocationSetRemove (xmlLocationSetPtr cur,
|
|
|
|
int val);
|
2011-08-25 19:08:55 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Functions.
|
|
|
|
*/
|
2012-04-19 14:35:52 +08:00
|
|
|
XMLPUBFUN xmlXPathContextPtr XMLCALL
|
|
|
|
xmlXPtrNewContext (xmlDocPtr doc,
|
|
|
|
xmlNodePtr here,
|
|
|
|
xmlNodePtr origin);
|
|
|
|
XMLPUBFUN xmlXPathObjectPtr XMLCALL
|
|
|
|
xmlXPtrEval (const xmlChar *str,
|
|
|
|
xmlXPathContextPtr ctx);
|
|
|
|
XMLPUBFUN void XMLCALL
|
|
|
|
xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt,
|
|
|
|
int nargs);
|
|
|
|
XMLPUBFUN xmlNodePtr XMLCALL
|
|
|
|
xmlXPtrBuildNodeList (xmlXPathObjectPtr obj);
|
|
|
|
XMLPUBFUN void XMLCALL
|
|
|
|
xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt);
|
2011-08-25 19:08:55 +08:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* LIBXML_XPTR_ENABLED */
|
|
|
|
#endif /* __XML_XPTR_H__ */
|