diff --git a/ChangeLog b/ChangeLog
index f78f30b..17a72b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Wed May 12 08:21:33 HKT 2004 William Brack <wbrack@mmm.com.hk>
+
+	* xmlschemas.c: added code in xmlSchemaBuildContentModel to
+	  allow ref in group definition (bug 134411).  Also fixed
+	  misc compilation warning messages.
+	* result/schema/group0_0_0, result/schema/group0_0_0.err:
+	  regenerated (now no error reported).
+	  
 Tue May 11 11:55:59 CEST 2004 Daniel Veillard <daniel@veillard.com>
 
 	* xmlIO.c: fix to the fix for #141864 from Paul Elseth  
diff --git a/result/schemas/group0_0_0 b/result/schemas/group0_0_0
index b5f479c..587a74a 100644
--- a/result/schemas/group0_0_0
+++ b/result/schemas/group0_0_0
@@ -1 +1 @@
-./test/schemas/group0_0.xml fails to validate
+./test/schemas/group0_0.xml validates
diff --git a/result/schemas/group0_0_0.err b/result/schemas/group0_0_0.err
index b7b5302..e69de29 100644
--- a/result/schemas/group0_0_0.err
+++ b/result/schemas/group0_0_0.err
@@ -1 +0,0 @@
-./test/schemas/group0_0.xml:1: element author: Schemas validity error : Element author content check failed
diff --git a/xmlschemas.c b/xmlschemas.c
index 27f584f..4aa9dc4 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -934,6 +934,7 @@
     return(ret);
 }
 
+#if 0
 /**
  * xmlSchemaGetNamespace:
  * @ctxt: the parser context
@@ -1010,6 +1011,7 @@
     *namespace = xmlDictLookup(ctxt->dict, ns->href, -1);
     return(name);
 }
+#endif
 
 /************************************************************************
  * 									*
@@ -2033,7 +2035,6 @@
     xmlNodePtr child = NULL;
     char buf[100];
     int hasRefType = 0;
-    int hasForm = 0;
 
     /*
      * Note that the w3c spec assumes the schema to be validated with schema
@@ -4521,6 +4522,20 @@
             break;
         case XML_SCHEMA_TYPE_GROUP:
             if (type->subtypes == NULL) {
+	        xmlSchemaTypePtr rgroup;
+		if (type->ref != NULL) {
+		    rgroup = xmlHashLookup2(ctxt->schema->groupDecl, type->ref,
+		    			   type->refNs);
+		    if (rgroup == NULL) {
+		        xmlSchemaPErr(ctxt, type->node,
+				      XML_SCHEMAP_UNKNOWN_REF,
+				"Schemas: group %s reference %s is not found",
+				name, type->ref);
+			return;
+		    }
+		    xmlSchemaBuildAContentModel(rgroup, ctxt, name);
+		    break;
+		}
             }
         case XML_SCHEMA_TYPE_COMPLEX:
         case XML_SCHEMA_TYPE_COMPLEX_CONTENT:
@@ -4667,7 +4682,7 @@
     xmlSchemaTypePtr subtype;
     
     /* Handle the "itemType" attribute. */
-    itemType = xmlGetQNameProp(ctxt, type->node, BAD_CAST "itemType", &namespace);
+    itemType = xmlGetQNameProp(ctxt, type->node, "itemType", &namespace);
     if (itemType != NULL) {
         /* Do not allow more that one item type. */
         if (type->subtypes != NULL) {
@@ -4681,7 +4696,7 @@
             xmlSchemaPErr(ctxt, type->node, XML_SCHEMAP_UNKNOWN_TYPE,
                           "List %s references an unknown item type: %s\n",
                           type->name, xmlSchemaGetProp(ctxt, type->node,
-			  BAD_CAST "itemType"));
+			  "itemType"));
         } else
             type->subtypes = subtype;
     }
@@ -4954,6 +4969,7 @@
             case XML_SCHEMA_TYPE_ELEMENT:
             case XML_SCHEMA_TYPE_ATTRIBUTE:
             case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
+            case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
             case XML_SCHEMA_TYPE_NOTATION:
             case XML_SCHEMA_TYPE_LIST:
 		xmlSchemaParseListRefFixup(typeDecl, ctxt);
@@ -5837,6 +5853,7 @@
     return (ret);
 }
 
+#if 0		/* Not currently used - remove if ever needed */
 /**
  * xmlSchemaValidateSimpleContent:
  * @ctxt:  a schema validation context
@@ -5897,6 +5914,7 @@
 
     return (ret);
 }
+#endif
 
 /**
  * xmlSchemaValidateCheckNodeList
@@ -6605,6 +6623,8 @@
             TODO break;
         case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
             TODO break;
+        case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
+            TODO break;
     }
     xmlSchemaValidateAttributes(ctxt, node, type->attributes);
 
@@ -6933,7 +6953,6 @@
 {
     xmlNodePtr root;
     xmlSchemaElementPtr elemDecl;
-    xmlNodePtr node;    
 
     root = xmlDocGetRootElement(doc);
     if (root == NULL) {
