diff options
author | Bruce Momjian <bruce@momjian.us> | 2004-03-05 03:24:50 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2004-03-05 03:24:50 +0000 |
commit | adca025c9ec4b3050411eb74a5b4f9c20a4ce2b5 (patch) | |
tree | 0a2869b222588e653c7fba482187a543e21305c5 /contrib/xml/pgxml.h | |
parent | 1973971821672447d30bda6f12736a7e5987569f (diff) | |
download | postgresql-adca025c9ec4b3050411eb74a5b4f9c20a4ce2b5.tar.gz postgresql-adca025c9ec4b3050411eb74a5b4f9c20a4ce2b5.zip |
Thanks to the generous support of Torchbox (http://www.torchbox.com), I
have been able to significantly improve the contrib/xml XPath
integration code.
New features:
* XPath set-returning function allows multiple results from an several
XPath queries to be used as a virtual table.
* Using libxslt, XSLT transformations (with and without parameters) are
supported. (Caution: This support allows generic URL fetching from
within the backend as well).
I've removed the old code so that it is all libxml based. Rather than
attach as a patch, I've put the tar.gz (10k!) at
http://www.azuli.co.uk/pgxml-1.0.tar.gz
(all files in archive are xml/....).
I think this is worth replacing the contrib version with, even though
the function names have changed (though the same functionality is
there), because it includes a SRF and some SPI usage, in addition to
linking to an external library. And it isn't a big module! Obviously, I
understand that people might prefer to move it elsewhere, or might have
reservations about replacing an existing contrib module with an
incompatible one. I'm open to suggestions.
John Gray
Diffstat (limited to 'contrib/xml/pgxml.h')
-rw-r--r-- | contrib/xml/pgxml.h | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/contrib/xml/pgxml.h b/contrib/xml/pgxml.h deleted file mode 100644 index 2b80124b771..00000000000 --- a/contrib/xml/pgxml.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Header for pg xml parser interface */ - -static void *pgxml_palloc(size_t size); -static void *pgxml_repalloc(void *ptr, size_t size); -static void pgxml_pfree(void *ptr); -static void pgxml_mhs_init(); -static void pgxml_handler_init(); -Datum pgxml_parse(PG_FUNCTION_ARGS); -Datum pgxml_xpath(PG_FUNCTION_ARGS); -static void pgxml_starthandler(void *userData, const XML_Char * name, - const XML_Char ** atts); -static void pgxml_endhandler(void *userData, const XML_Char * name); -static void pgxml_charhandler(void *userData, const XML_Char * s, int len); -static void pgxml_pathcompare(void *userData); -static void pgxml_finalisegrabbedtext(void *userData); - -#define MAXPATHLENGTH 512 -#define MAXRESULTS 100 - - -typedef struct -{ - int rescount; - char *results[MAXRESULTS]; - int32 reslens[MAXRESULTS]; - char *resbuf; /* pointer to the result buffer for pfree */ -} XPath_Results; - - - -typedef struct -{ - char currentpath[MAXPATHLENGTH]; - char *path; - int textgrab; - char *resptr; - int32 reslen; - XPath_Results *xpres; -} pgxml_udata; - - -#define UD ((pgxml_udata *) userData) |