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.
This commit is contained in:
Tom Lane 2006-09-16 16:18:11 +00:00
parent 801cbe3310
commit 1246d797e4
5 changed files with 25 additions and 11 deletions

View File

@ -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
'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
------------------------
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
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_number(document,query) RETURNS float4

View File

@ -1,8 +1,12 @@
--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;
-- 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
AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;

View File

@ -24,4 +24,7 @@ DROP FUNCTION xpath_string(text,text);
DROP FUNCTION xml_encode_special_chars(text);
-- deprecated old name for xml_is_well_formed
DROP FUNCTION xml_valid(text);
DROP FUNCTION xml_is_well_formed(text);

View File

@ -42,7 +42,7 @@ xmlChar *pgxml_texttoxmlchar(text *textstring);
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 xpath_nodeset(PG_FUNCTION_ARGS);
Datum xpath_string(PG_FUNCTION_ARGS);
@ -166,12 +166,12 @@ pgxml_parser_init()
/* Returns true if document is well-formed */
PG_FUNCTION_INFO_V1(xml_valid);
PG_FUNCTION_INFO_V1(xml_is_well_formed);
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;
text *t = PG_GETARG_TEXT_P(0); /* document buffer */
int32 docsize = VARSIZE(t) - VARHDRSZ;

View File

@ -1,4 +1,4 @@
<!-- $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">
<title id="datatype-title">Data Types</title>
@ -3345,8 +3345,8 @@ SELECT * FROM pg_attribute
<para>
<filename>/contrib/xml2</> has a function called
<function>xml_valid()</> that can be used in a <literal>CHECK</>
constraint to enforce that a field contains valid <acronym>XML</>.
<function>xml_is_well_formed()</> that can be used in a <literal>CHECK</>
constraint to enforce that a field contains well-formed <acronym>XML</>.
It does not support validation against a specific <acronym>XML</>
schema. A server-side language with <acronym>XML</> capabilities
could be used to do schema-specific <acronym>XML</> checks.