mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
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
58 lines
1.8 KiB
MySQL
58 lines
1.8 KiB
MySQL
--SQL for XML parser
|
|
|
|
CREATE OR REPLACE FUNCTION pgxml_parse(text) RETURNS bool
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_string(text,text) RETURNS text
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text,text) RETURNS text
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_number(text,text) RETURNS float4
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_bool(text,text) RETURNS boolean
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
|
|
|
|
-- List function
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_list(text,text,text) RETURNS text
|
|
AS 'MODULE_PATHNAME'
|
|
LANGUAGE 'c' WITH (isStrict);
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_list(text,text) RETURNS text
|
|
AS 'SELECT xpath_list($1,$2,'','')' language 'SQL' WITH (isStrict);
|
|
|
|
|
|
|
|
-- Wrapper functions for nodeset where no tags needed.
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text) RETURNS text AS
|
|
'SELECT xpath_nodeset($1,$2,'''','''')' language 'SQL' WITH (isStrict);
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text) RETURNS text AS
|
|
'SELECT xpath_nodeset($1,$2,'''',$3)' language 'SQL' WITH (isStrict);
|
|
|
|
-- Table function
|
|
|
|
CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text) RETURNS setof record
|
|
AS 'MODULE_PATHNAME'
|
|
LANGUAGE 'c' WITH (isStrict);
|
|
|
|
-- XSLT functions
|
|
-- Delete from here to the end of the file if you are not compiling with
|
|
-- XSLT support.
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION xslt_process(text,text,text) RETURNS text
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
|
|
|
|
-- the function checks for the correct argument count
|
|
|
|
CREATE OR REPLACE FUNCTION xslt_process(text,text) RETURNS text
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
|