diff --git a/configure b/configure
index 14ad0a5006f..6b4dd7c16a1 100755
--- a/configure
+++ b/configure
@@ -706,6 +706,7 @@ with_lz4
 with_zlib
 with_system_tzdata
 with_libxslt
+XML_KEEP_BLANKS_DEPRECATED
 XML2_LIBS
 XML2_CFLAGS
 XML2_CONFIG
@@ -14174,6 +14175,34 @@ else
   as_fn_error $? "header file <libxml/parser.h> is required for XML support" "$LINENO" 5
 fi
 
+  # Check if xmlKeepBlanksDefault triggers a deprecation warning
+  pgac_cv_xml_keep_blanks_deprecated=no
+  if test "$GCC" = yes; then
+    { $as_echo "$as_me:${as_lineno[$LINENO]}: checking whether xmlKeepBlanksDefault is deprecated" >&5
+$as_echo_n "checking whether xmlKeepBlanksDefault is deprecated... " >&6; }
+    pgac_save_CFLAGS=$CFLAGS
+    CFLAGS="$CFLAGS -Werror=deprecated-declarations"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libxml/parser.h>
+int
+main ()
+{
+xmlKeepBlanksDefault(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+else
+  pgac_cv_xml_keep_blanks_deprecated=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    CFLAGS=$pgac_save_CFLAGS
+    { $as_echo "$as_me:${as_lineno[$LINENO]}: result: $pgac_cv_xml_keep_blanks_deprecated" >&5
+$as_echo "$pgac_cv_xml_keep_blanks_deprecated" >&6; }
+  fi
+  XML_KEEP_BLANKS_DEPRECATED=$pgac_cv_xml_keep_blanks_deprecated
 
 fi
 
diff --git a/configure.ac b/configure.ac
index 01b3bbc1be8..649d5992bf3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1603,6 +1603,20 @@ fi
 
 if test "$with_libxml" = yes ; then
   AC_CHECK_HEADER(libxml/parser.h, [], [AC_MSG_ERROR([header file <libxml/parser.h> is required for XML support])])
+  # Check if xmlKeepBlanksDefault triggers a deprecation warning
+  pgac_cv_xml_keep_blanks_deprecated=no
+  if test "$GCC" = yes; then
+    AC_MSG_CHECKING([whether xmlKeepBlanksDefault is deprecated])
+    pgac_save_CFLAGS=$CFLAGS
+    CFLAGS="$CFLAGS -Werror=deprecated-declarations"
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <libxml/parser.h>],
+                                       [xmlKeepBlanksDefault(0);])],
+                      [],
+                      [pgac_cv_xml_keep_blanks_deprecated=yes])
+    CFLAGS=$pgac_save_CFLAGS
+    AC_MSG_RESULT([$pgac_cv_xml_keep_blanks_deprecated])
+  fi
+  AC_SUBST(XML_KEEP_BLANKS_DEPRECATED, [$pgac_cv_xml_keep_blanks_deprecated])
 fi
 
 if test "$with_libxslt" = yes ; then
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 371cd7eba2c..a9f94d84cbf 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -278,6 +278,7 @@ CFLAGS_VECTORIZE = @CFLAGS_VECTORIZE@
 CFLAGS_CRC = @CFLAGS_CRC@
 PERMIT_DECLARATION_AFTER_STATEMENT = @PERMIT_DECLARATION_AFTER_STATEMENT@
 PERMIT_MISSING_VARIABLE_DECLARATIONS = @PERMIT_MISSING_VARIABLE_DECLARATIONS@
+XML_KEEP_BLANKS_DEPRECATED = @XML_KEEP_BLANKS_DEPRECATED@
 CXXFLAGS = @CXXFLAGS@
 
 LLVM_CPPFLAGS = @LLVM_CPPFLAGS@
diff --git a/src/backend/utils/adt/Makefile b/src/backend/utils/adt/Makefile
index ba40ada11ca..a25ba8b89a3 100644
--- a/src/backend/utils/adt/Makefile
+++ b/src/backend/utils/adt/Makefile
@@ -151,6 +151,11 @@ like.o: like.c like_match.c
 # Some code in numeric.c benefits from auto-vectorization
 numeric.o: CFLAGS += ${CFLAGS_VECTORIZE}
 
+# Suppress deprecation warning for xmlKeepBlanksDefault
+ifeq ($(XML_KEEP_BLANKS_DEPRECATED), yes)
+xml.o: CFLAGS += -Wno-deprecated-declarations
+endif
+
 varlena.o: varlena.c levenshtein.c
 
 include $(top_srcdir)/src/backend/common.mk
