595792 fixing a RelaxNG bug introduced in 2.7.4

* relaxng.c: refs definitions added from inported schemas should not
  be processed as refs from the main schemas
* test/relaxng/595792* result/relaxng/595792*: add the test to the
  regression suite
diff --git a/relaxng.c b/relaxng.c
index d124d72..075fc4a 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -149,6 +149,7 @@
 #define IS_PROCESSED		(1 << 5)
 #define IS_COMPILABLE		(1 << 6)
 #define IS_NOT_COMPILABLE	(1 << 7)
+#define IS_EXTERNAL_REF	        (1 << 8)
 
 struct _xmlRelaxNGDefine {
     xmlRelaxNGType type;        /* the type of definition */
@@ -4662,6 +4663,8 @@
     xmlRelaxNGDefinePtr def = (xmlRelaxNGDefinePtr) payload;
     int tmp;
 
+    def->dflags |= IS_EXTERNAL_REF;
+
     tmp = xmlHashAddEntry(ctxt->grammar->refs, name, def);
     if (tmp < 0) {
         xmlRelaxNGDefinePtr prev;
@@ -5668,6 +5671,12 @@
     xmlRelaxNGGrammarPtr grammar;
     xmlRelaxNGDefinePtr def, cur;
 
+    /*
+     * Those rules don't apply to imported ref from xmlRelaxNGParseImportRef
+     */
+    if (ref->dflags & IS_EXTERNAL_REF)
+        return;
+
     grammar = ctxt->grammar;
     if (grammar == NULL) {
         xmlRngPErr(ctxt, ref->node, XML_ERR_INTERNAL_ERROR,