diff --git a/ChangeLog b/ChangeLog
index b120bc7..a6ce1bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Sep 14 19:52:18 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
+
+	* include/libxml/schemasInternals.h: Added some comments for the
+	  struct fields.
+
 Wed Sep 14 13:24:27 HKT 2005 William Brack <wbrack@mmm.com.hk>
 
 	* uri.c: fixed problem when xmlBuildRelativeURI was given a
diff --git a/include/libxml/schemasInternals.h b/include/libxml/schemasInternals.h
index 384758d..7467d31 100644
--- a/include/libxml/schemasInternals.h
+++ b/include/libxml/schemasInternals.h
@@ -124,7 +124,7 @@
     XML_SCHEMA_CONTENT_ELEMENTS,
     XML_SCHEMA_CONTENT_MIXED,
     XML_SCHEMA_CONTENT_SIMPLE,
-    XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* obsolete, not used */
+    XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */
     XML_SCHEMA_CONTENT_BASIC,
     XML_SCHEMA_CONTENT_ANY
 } xmlSchemaContentType;
@@ -242,8 +242,8 @@
 typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
 typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
 struct _xmlSchemaAttribute {
-    xmlSchemaTypeType type;        /* The kind of type */
-    struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
+    xmlSchemaTypeType type;
+    struct _xmlSchemaAttribute *next; /* the next attribute ... */
     const xmlChar *name; /* name of the declaration or empty if particle */
     const xmlChar *id;
     const xmlChar *ref; /* the local name of the attribute decl. if a particle */
@@ -252,21 +252,22 @@
     const xmlChar *typeNs; /* the ns URI of the type definition */
     xmlSchemaAnnotPtr annot;
 
-    xmlSchemaTypePtr base; /* obsolete, not used */
+    xmlSchemaTypePtr base; /* Obsolete, */
     int occurs;
-    const xmlChar *defValue;
+    const xmlChar *defValue; /* The original value of the value constraint */
     xmlSchemaTypePtr subtypes; /* the type definition */
     xmlNodePtr node;
     const xmlChar *targetNamespace;
     int flags;
-    const xmlChar *refPrefix;
-    xmlSchemaValPtr defVal;
+    const xmlChar *refPrefix; /* Obsolete */
+    xmlSchemaValPtr defVal; /* The compiled value constraint */
     xmlSchemaAttributePtr refDecl;
 };
 
 /**
  * xmlSchemaAttributeLink:
  * Used to build a list of attribute uses on complexType definitions.
+ * TODO: Extend this to work as an "attribute use".
  */
 typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
 typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
@@ -304,8 +305,8 @@
     const xmlChar *id;
     xmlSchemaAnnotPtr annot;
     xmlNodePtr node;
-    int minOccurs;
-    int maxOccurs;
+    int minOccurs; /* Obsolete; this goes into particles */
+    int maxOccurs; /* Obsolete; this goes into particles */
     int processContents;
     int any; /* Indicates if the ns constraint is of ##any */
     xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */
@@ -333,6 +334,13 @@
 #define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
 
 /**
+ * XML_SCHEMAS_ATTRGROUP_REDEFINED:
+ *
+ * The attr group was redefined.
+ */
+#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3
+
+/**
  * An attribute group definition.
  *
  * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
@@ -353,10 +361,9 @@
     xmlNodePtr node;
     int flags;
     xmlSchemaWildcardPtr attributeWildcard;
-    const xmlChar *refPrefix;
+    const xmlChar *refPrefix; /* Obsolete */
     xmlSchemaAttributeGroupPtr refItem; /* The referenced attribute group */
     const xmlChar *targetNamespace;
-    /* xmlSchemaAttributeGroupPtr redef;*/  /* Redefinitions */
 };
 
 /**
@@ -368,7 +375,7 @@
 typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
 struct _xmlSchemaTypeLink {
     struct _xmlSchemaTypeLink *next;/* the next type link ... */
-    xmlSchemaTypePtr type;/* the linked type*/
+    xmlSchemaTypePtr type;/* the linked type */
 };
 
 /**
@@ -417,6 +424,9 @@
  * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
  *
  * the simpleType has a variety of "absent".
+ * TODO: Actually not necessary :-/, since if
+ * none of the variety flags occur then it's
+ * automatically absent.
  */
 #define XML_SCHEMAS_TYPE_VARIETY_ABSENT    1 << 5
 /**
@@ -561,6 +571,19 @@
 #define XML_SCHEMAS_TYPE_FIXUP_1    1 << 29
 
 /**
+ * XML_SCHEMAS_TYPE_REDEFINED:
+ *
+ * The type was redefined.
+ */
+#define XML_SCHEMAS_TYPE_REDEFINED    1 << 30
+/**
+ * XML_SCHEMAS_TYPE_REDEFINING:
+ *
+ * The type redefines an other type.
+ */
+/* #define XML_SCHEMAS_TYPE_REDEFINING    1 << 31 */
+
+/**
  * _xmlSchemaType:
  *
  * Schemas type definition.
@@ -569,30 +592,30 @@
     xmlSchemaTypeType type;        /* The kind of type */
     struct _xmlSchemaType *next;/* the next type if in a sequence ... */
     const xmlChar *name;
-    const xmlChar *id;
-    const xmlChar *ref;
-    const xmlChar *refNs;
+    const xmlChar *id; /* Obsolete; the ID is not part of the component */
+    const xmlChar *ref; /* TODO: Obsolete ? */
+    const xmlChar *refNs; /* TODO: Obsolete ? */
     xmlSchemaAnnotPtr annot;
     xmlSchemaTypePtr subtypes;
-    xmlSchemaAttributePtr attributes;
+    xmlSchemaAttributePtr attributes; /* Explicitely declared attributes or refs */
     xmlNodePtr node;
-    int minOccurs;
-    int maxOccurs;
+    int minOccurs; /* Obsolete; this goes into particles */
+    int maxOccurs; /* Obsolete; this goes into particles */
 
     int flags;
     xmlSchemaContentType contentType;
-    const xmlChar *base;
-    const xmlChar *baseNs;
-    xmlSchemaTypePtr baseType;
-    xmlSchemaFacetPtr facets;
-    struct _xmlSchemaType *redef;/* possible redefinitions for the type */
-    int recurse;
-    xmlSchemaAttributeLinkPtr attributeUses;
+    const xmlChar *base; /* Base type's local name */
+    const xmlChar *baseNs; /* Base type's target namespace */
+    xmlSchemaTypePtr baseType; /* The base type component */
+    xmlSchemaFacetPtr facets; /* Local facets */
+    struct _xmlSchemaType *redef; /* Obsolete */
+    int recurse; /* Obsolete */
+    xmlSchemaAttributeLinkPtr attributeUses; /* Attribute uses (incl. inherited) */
     xmlSchemaWildcardPtr attributeWildcard;
     int builtInType;
     xmlSchemaTypeLinkPtr memberTypes;
-    xmlSchemaFacetLinkPtr facetSet;
-    const xmlChar *refPrefix;
+    xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */
+    const xmlChar *refPrefix; /* Obsolete */
     xmlSchemaTypePtr contentTypeDef;
     xmlRegexpPtr contModel;
     const xmlChar *targetNamespace;
@@ -727,18 +750,18 @@
 typedef struct _xmlSchemaElement xmlSchemaElement;
 typedef xmlSchemaElement *xmlSchemaElementPtr;
 struct _xmlSchemaElement {
-    xmlSchemaTypeType type;        /* The kind of type */
-    struct _xmlSchemaType *next;/* the next type if in a sequence ... */
+    xmlSchemaTypeType type; /* The kind of type */
+    struct _xmlSchemaType *next; /* Not used? */
     const xmlChar *name;
-    const xmlChar *id;
-    const xmlChar *ref; /* the local name of the element declaration if a particle */
-    const xmlChar *refNs; /* the ns URI of the element declaration if a particle */
+    const xmlChar *id; /* Obsolete */
+    const xmlChar *ref; /* Obsolete */
+    const xmlChar *refNs; /* Obsolete */
     xmlSchemaAnnotPtr annot;
     xmlSchemaTypePtr subtypes; /* the type definition */
     xmlSchemaAttributePtr attributes;
     xmlNodePtr node;
-    int minOccurs;
-    int maxOccurs;
+    int minOccurs; /* Obsolete; this goes into particles. */
+    int maxOccurs; /* Obsolete; this goes into particles. */
 
     int flags;
     const xmlChar *targetNamespace;
@@ -747,13 +770,14 @@
     const xmlChar *substGroup;
     const xmlChar *substGroupNs;
     const xmlChar *scope;
-    const xmlChar *value;
-    struct _xmlSchemaElement *refDecl; /* This will now be used for the substitution group affiliation */
-    xmlRegexpPtr contModel;
+    const xmlChar *value; /* The original value of the value constraint. */
+    struct _xmlSchemaElement *refDecl; /* This will now be used for the
+                                          substitution group affiliation */
+    xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */
     xmlSchemaContentType contentType;
-    const xmlChar *refPrefix;
-    xmlSchemaValPtr defVal;
-    void *idcs;
+    const xmlChar *refPrefix; /* Obsolete */
+    xmlSchemaValPtr defVal; /* The compiled value contraint. */
+    void *idcs; /* The identity-constraint defs */
 };
 
 /*
@@ -786,14 +810,14 @@
 struct _xmlSchemaFacet {
     xmlSchemaTypeType type;        /* The kind of type */
     struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
-    const xmlChar *value;
-    const xmlChar *id;
+    const xmlChar *value; /* The original value */
+    const xmlChar *id; /* Obsolete */
     xmlSchemaAnnotPtr annot;
     xmlNodePtr node;
-    int fixed;
+    int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */
     int whitespace;
-    xmlSchemaValPtr val;
-    xmlRegexpPtr    regexp;
+    xmlSchemaValPtr val; /* The compiled value */
+    xmlRegexpPtr    regexp; /* The regex for patterns */
 };
 
 /**
@@ -810,7 +834,7 @@
 };
 
 /*
-* Actually all those flags used for the schema should sit
+* TODO: Actually all those flags used for the schema should sit
 * on the schema parser context, since they are used only
 * during parsing an XML schema document, and not available
 * on the component level as per spec.
@@ -884,10 +908,10 @@
  * A Schemas definition
  */
 struct _xmlSchema {
-    const xmlChar *name;        /* schema name */
-    const xmlChar *targetNamespace;     /* the target namespace */
+    const xmlChar *name; /* schema name */
+    const xmlChar *targetNamespace; /* the target namespace */
     const xmlChar *version;
-    const xmlChar *id;
+    const xmlChar *id; /* Obsolete */
     xmlDocPtr doc;
     xmlSchemaAnnotPtr annot;
     int flags;
@@ -906,8 +930,8 @@
     void *includes;     /* the includes, this is opaque for now */
     int preserve;        /* whether to free the document */
     int counter; /* used to give ononymous components unique names */
-    xmlHashTablePtr idcDef;
-    void *volatiles; /* Deprecated; not used anymore. */
+    xmlHashTablePtr idcDef; /* All identity-constraint defs. */
+    void *volatiles; /* Obsolete */
 };
 
 XMLPUBFUN void XMLCALL         xmlSchemaFreeType        (xmlSchemaTypePtr type);
