diff --git a/include/libxml/valid.h b/include/libxml/valid.h
index 7a2fc9ba0a4fff2eee0766a59474471130933da7_aW5jbHVkZS9saWJ4bWwvdmFsaWQuaA==..de04ecff046f031a463d9505528c4d4a7386f86e_aW5jbHVkZS9saWJ4bWwvdmFsaWQuaA== 100644
--- a/include/libxml/valid.h
+++ b/include/libxml/valid.h
@@ -283,8 +283,9 @@
 					xmlAttrPtr attr);
 
 /* IDREFs */
+XML_DEPRECATED
 XMLPUBFUN xmlRefPtr XMLCALL
 		xmlAddRef	       (xmlValidCtxtPtr ctxt,
 					xmlDocPtr doc,
 					const xmlChar *value,
 					xmlAttrPtr attr);
@@ -286,7 +287,8 @@
 XMLPUBFUN xmlRefPtr XMLCALL
 		xmlAddRef	       (xmlValidCtxtPtr ctxt,
 					xmlDocPtr doc,
 					const xmlChar *value,
 					xmlAttrPtr attr);
+XML_DEPRECATED
 XMLPUBFUN void XMLCALL
 		xmlFreeRefTable	       (xmlRefTablePtr table);
@@ -291,6 +293,7 @@
 XMLPUBFUN void XMLCALL
 		xmlFreeRefTable	       (xmlRefTablePtr table);
+XML_DEPRECATED
 XMLPUBFUN int XMLCALL
 		xmlIsRef	       (xmlDocPtr doc,
 					xmlNodePtr elem,
 					xmlAttrPtr attr);
@@ -293,7 +296,8 @@
 XMLPUBFUN int XMLCALL
 		xmlIsRef	       (xmlDocPtr doc,
 					xmlNodePtr elem,
 					xmlAttrPtr attr);
+XML_DEPRECATED
 XMLPUBFUN int XMLCALL
 		xmlRemoveRef	       (xmlDocPtr doc,
 					xmlAttrPtr attr);
@@ -297,6 +301,7 @@
 XMLPUBFUN int XMLCALL
 		xmlRemoveRef	       (xmlDocPtr doc,
 					xmlAttrPtr attr);
+XML_DEPRECATED
 XMLPUBFUN xmlListPtr XMLCALL
 		xmlGetRefs	       (xmlDocPtr doc,
 					const xmlChar *ID);
diff --git a/python/generator.py b/python/generator.py
index 7a2fc9ba0a4fff2eee0766a59474471130933da7_cHl0aG9uL2dlbmVyYXRvci5weQ==..de04ecff046f031a463d9505528c4d4a7386f86e_cHl0aG9uL2dlbmVyYXRvci5weQ== 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -289,4 +289,9 @@
     'xmlSaveFormatFileTo',
 )
 
+deprecated_funcs = {
+    'xmlIsRef': True,
+    'xmlRemoveRef': True,
+}
+
 def skip_function(name):
@@ -292,4 +297,6 @@
 def skip_function(name):
+    if name in deprecated_funcs:
+        return 1
     if name[0:12] == "xmlXPathWrap":
         return 1
     if name == "xmlFreeParserCtxt":
diff --git a/valid.c b/valid.c
index 7a2fc9ba0a4fff2eee0766a59474471130933da7_dmFsaWQuYw==..de04ecff046f031a463d9505528c4d4a7386f86e_dmFsaWQuYw== 100644
--- a/valid.c
+++ b/valid.c
@@ -3000,6 +3000,8 @@
  * @value:  the value name
  * @attr:  the attribute holding the Ref
  *
+ * DEPRECATED, do not use. This function will be removed from the public API.
+ *
  * Register a new ref declaration
  *
  * Returns NULL if not, otherwise the new xmlRefPtr
@@ -3100,6 +3102,8 @@
  * xmlFreeRefTable:
  * @table:  An ref table
  *
+ * DEPRECATED, do not use. This function will be removed from the public API.
+ *
  * Deallocate the memory used by an Ref hash table.
  */
 void
@@ -3113,6 +3117,8 @@
  * @elem:  the element carrying the attribute
  * @attr:  the attribute
  *
+ * DEPRECATED, do not use. This function will be removed from the public API.
+ *
  * Determine whether an attribute is of type Ref. In case we have DTD(s)
  * then this is simple, otherwise we use an heuristic: name Ref (upper
  * or lowercase).
@@ -3155,6 +3161,8 @@
  * @doc:  the document
  * @attr:  the attribute
  *
+ * DEPRECATED, do not use. This function will be removed from the public API.
+ *
  * Remove the given attribute from the Ref table maintained internally.
  *
  * Returns -1 if the lookup failed and 0 otherwise
@@ -3211,6 +3219,8 @@
  * @doc:  pointer to the document
  * @ID:  the ID value
  *
+ * DEPRECATED, do not use. This function will be removed from the public API.
+ *
  * Find the set of references for the supplied ID.
  *
  * Returns NULL if not found, otherwise node set for the ID.