Commit 1246d797 authored by Tom Lane's avatar Tom Lane

Rename xml_valid() to xml_is_well_formed(), but provide a temporary

alias with the old name for backwards compatibility.  Per discussion,
the old name is actively wrong because validity and well-formedness
have different meanings in XML.
parent 801cbe33
...@@ -21,17 +21,24 @@ you can place it in a different directory in a PostgreSQL tree). ...@@ -21,17 +21,24 @@ you can place it in a different directory in a PostgreSQL tree).
Before you begin, just check the Makefile, and then just 'make' and Before you begin, just check the Makefile, and then just 'make' and
'make install'. 'make install'.
This code requires libxml to be previously installed. By default, this module requires both libxml2 and libxslt to be installed
on your system. If you do not have libxslt or do not want to use XSLT
functions, you must edit the Makefile to not build the XSLT functions,
as directed in its comments; and edit pgxml.sql.in to remove the XSLT
function declarations, as directed in its comments.
Description of functions Description of functions
------------------------ ------------------------
The first set of functions are straightforward XML parsing and XPath queries: The first set of functions are straightforward XML parsing and XPath queries:
xml_valid(document) RETURNS bool xml_is_well_formed(document) RETURNS bool
This parses the document text in its parameter and returns true if the This parses the document text in its parameter and returns true if the
document is well-formed XML. document is well-formed XML. (Note: before PostgreSQL 8.2, this function
was called xml_valid(). That is the wrong name since validity and
well-formedness have different meanings in XML. The old name is still
available, but is deprecated and will be removed in 8.3.)
xpath_string(document,query) RETURNS text xpath_string(document,query) RETURNS text
xpath_number(document,query) RETURNS float4 xpath_number(document,query) RETURNS float4
......
--SQL for XML parser --SQL for XML parser
CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool CREATE OR REPLACE FUNCTION xml_is_well_formed(text) RETURNS bool
AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
-- deprecated old name for xml_is_well_formed
CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool
AS 'MODULE_PATHNAME', 'xml_is_well_formed' LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xml_encode_special_chars(text) RETURNS text CREATE OR REPLACE FUNCTION xml_encode_special_chars(text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
......
...@@ -24,4 +24,7 @@ DROP FUNCTION xpath_string(text,text); ...@@ -24,4 +24,7 @@ DROP FUNCTION xpath_string(text,text);
DROP FUNCTION xml_encode_special_chars(text); DROP FUNCTION xml_encode_special_chars(text);
-- deprecated old name for xml_is_well_formed
DROP FUNCTION xml_valid(text); DROP FUNCTION xml_valid(text);
DROP FUNCTION xml_is_well_formed(text);
...@@ -42,7 +42,7 @@ xmlChar *pgxml_texttoxmlchar(text *textstring); ...@@ -42,7 +42,7 @@ xmlChar *pgxml_texttoxmlchar(text *textstring);
static xmlXPathObjectPtr pgxml_xpath(text *document, xmlChar * xpath); static xmlXPathObjectPtr pgxml_xpath(text *document, xmlChar * xpath);
Datum xml_valid(PG_FUNCTION_ARGS); Datum xml_is_well_formed(PG_FUNCTION_ARGS);
Datum xml_encode_special_chars(PG_FUNCTION_ARGS); Datum xml_encode_special_chars(PG_FUNCTION_ARGS);
Datum xpath_nodeset(PG_FUNCTION_ARGS); Datum xpath_nodeset(PG_FUNCTION_ARGS);
Datum xpath_string(PG_FUNCTION_ARGS); Datum xpath_string(PG_FUNCTION_ARGS);
...@@ -166,12 +166,12 @@ pgxml_parser_init() ...@@ -166,12 +166,12 @@ pgxml_parser_init()
/* Returns true if document is well-formed */ /* Returns true if document is well-formed */
PG_FUNCTION_INFO_V1(xml_valid); PG_FUNCTION_INFO_V1(xml_is_well_formed);
Datum Datum
xml_valid(PG_FUNCTION_ARGS) xml_is_well_formed(PG_FUNCTION_ARGS)
{ {
/* called as xml_valid(document) */ /* called as xml_is_well_formed(document) */
xmlDocPtr doctree; xmlDocPtr doctree;
text *t = PG_GETARG_TEXT_P(0); /* document buffer */ text *t = PG_GETARG_TEXT_P(0); /* document buffer */
int32 docsize = VARSIZE(t) - VARHDRSZ; int32 docsize = VARSIZE(t) - VARHDRSZ;
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.174 2006/09/16 00:30:12 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.175 2006/09/16 16:18:11 tgl Exp $ -->
<chapter id="datatype"> <chapter id="datatype">
<title id="datatype-title">Data Types</title> <title id="datatype-title">Data Types</title>
...@@ -3345,8 +3345,8 @@ SELECT * FROM pg_attribute ...@@ -3345,8 +3345,8 @@ SELECT * FROM pg_attribute
<para> <para>
<filename>/contrib/xml2</> has a function called <filename>/contrib/xml2</> has a function called
<function>xml_valid()</> that can be used in a <literal>CHECK</> <function>xml_is_well_formed()</> that can be used in a <literal>CHECK</>
constraint to enforce that a field contains valid <acronym>XML</>. constraint to enforce that a field contains well-formed <acronym>XML</>.
It does not support validation against a specific <acronym>XML</> It does not support validation against a specific <acronym>XML</>
schema. A server-side language with <acronym>XML</> capabilities schema. A server-side language with <acronym>XML</> capabilities
could be used to do schema-specific <acronym>XML</> checks. could be used to do schema-specific <acronym>XML</> checks.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment