Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/xml2/xslt_proc.c')
-rw-r--r--contrib/xml2/xslt_proc.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/contrib/xml2/xslt_proc.c b/contrib/xml2/xslt_proc.c
index 9b71766fceb..8bd9e401fa2 100644
--- a/contrib/xml2/xslt_proc.c
+++ b/contrib/xml2/xslt_proc.c
@@ -1,5 +1,5 @@
/*
- * $PostgreSQL: pgsql/contrib/xml2/xslt_proc.c,v 1.19 2010/03/01 18:07:59 tgl Exp $
+ * $PostgreSQL: pgsql/contrib/xml2/xslt_proc.c,v 1.20 2010/03/03 19:10:22 tgl Exp $
*
* XSLT processing functions (requiring libxslt)
*
@@ -12,6 +12,7 @@
#include "funcapi.h"
#include "miscadmin.h"
#include "utils/builtins.h"
+#include "utils/xml.h"
#ifdef USE_LIBXSLT
@@ -38,7 +39,6 @@ Datum xslt_process(PG_FUNCTION_ARGS);
#ifdef USE_LIBXSLT
/* declarations to come from xpath.c */
-extern void elog_error(const char *explain, bool force);
extern void pgxml_parser_init(void);
/* local defs */
@@ -88,11 +88,8 @@ xslt_process(PG_FUNCTION_ARGS)
doctree = xmlParseFile(text_to_cstring(doct));
if (doctree == NULL)
- {
- elog_error("error parsing XML document", false);
-
- PG_RETURN_NULL();
- }
+ xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION,
+ "error parsing XML document");
/* Same for stylesheet */
if (VARDATA(ssheet)[0] == '<')
@@ -102,8 +99,8 @@ xslt_process(PG_FUNCTION_ARGS)
if (ssdoc == NULL)
{
xmlFreeDoc(doctree);
- elog_error("error parsing stylesheet as XML document", false);
- PG_RETURN_NULL();
+ xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION,
+ "error parsing stylesheet as XML document");
}
stylesheet = xsltParseStylesheetDoc(ssdoc);
@@ -116,8 +113,8 @@ xslt_process(PG_FUNCTION_ARGS)
{
xmlFreeDoc(doctree);
xsltCleanupGlobals();
- elog_error("failed to parse stylesheet", false);
- PG_RETURN_NULL();
+ xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION,
+ "failed to parse stylesheet");
}
restree = xsltApplyStylesheet(stylesheet, doctree, params);