summaryrefslogtreecommitdiff
path: root/relaxng.c
diff options
context:
space:
mode:
Diffstat (limited to 'relaxng.c')
-rw-r--r--relaxng.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/relaxng.c b/relaxng.c
index d124d72..075fc4a 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -149,6 +149,7 @@ typedef enum {
#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 @@ xmlRelaxNGParseImportRef(void *payload, void *data, xmlChar *name) {
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 @@ xmlRelaxNGCheckReference(xmlRelaxNGDefinePtr ref,
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,