Release 1.6, lot of fixes, more validation, code cleanup, added namespace
on attributes, Daniel.
diff --git a/testSAX.c b/testSAX.c
index 2b2e89b..7dcdcf4 100644
--- a/testSAX.c
+++ b/testSAX.c
@@ -105,7 +105,7 @@
  * Returns 1 if true
  */
 int
-isStandaloneDebug(xmlParserCtxtPtr ctxt)
+isStandaloneDebug(void *ctx)
 {
     fprintf(stdout, "SAX.isStandalone()\n");
     return(0);
@@ -120,7 +120,7 @@
  * Returns 1 if true
  */
 int
-hasInternalSubsetDebug(xmlParserCtxtPtr ctxt)
+hasInternalSubsetDebug(void *ctx)
 {
     fprintf(stdout, "SAX.hasInternalSubset()\n");
     return(0);
@@ -135,7 +135,7 @@
  * Returns 1 if true
  */
 int
-hasExternalSubsetDebug(xmlParserCtxtPtr ctxt)
+hasExternalSubsetDebug(void *ctx)
 {
     fprintf(stdout, "SAX.hasExternalSubset()\n");
     return(0);
@@ -148,7 +148,7 @@
  * Does this document has an internal subset
  */
 void
-internalSubsetDebug(xmlParserCtxtPtr ctxt, const CHAR *name,
+internalSubsetDebug(void *ctx, const CHAR *name,
 	       const CHAR *ExternalID, const CHAR *SystemID)
 {
     xmlDtdPtr externalSubset;
@@ -179,8 +179,10 @@
  * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
  */
 xmlParserInputPtr
-resolveEntityDebug(xmlParserCtxtPtr ctxt, const CHAR *publicId, const CHAR *systemId)
+resolveEntityDebug(void *ctx, const CHAR *publicId, const CHAR *systemId)
 {
+    xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
+
     
     fprintf(stdout, "SAX.resolveEntity(");
     if (publicId != NULL)
@@ -192,7 +194,7 @@
     else
 	fprintf(stdout, ", )\n");
     if (systemId != NULL) {
-        return(xmlNewInputFromFile(ctxt, systemId));
+        return(xmlNewInputFromFile(ctxt, (char *) systemId));
     }
     return(NULL);
 }
@@ -207,7 +209,7 @@
  * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
  */
 xmlEntityPtr
-getEntityDebug(xmlParserCtxtPtr ctxt, const CHAR *name)
+getEntityDebug(void *ctx, const CHAR *name)
 {
     fprintf(stdout, "SAX.getEntity(%s)\n", name);
     return(NULL);
@@ -223,7 +225,7 @@
  * Returns the xmlParserInputPtr
  */
 xmlEntityPtr
-getParameterEntityDebug(xmlParserCtxtPtr ctxt, const CHAR *name)
+getParameterEntityDebug(void *ctx, const CHAR *name)
 {
     fprintf(stdout, "SAX.getParameterEntity(%s)\n", name);
     return(NULL);
@@ -242,7 +244,7 @@
  * An entity definition has been parsed
  */
 void
-entityDeclDebug(xmlParserCtxtPtr ctxt, const CHAR *name, int type,
+entityDeclDebug(void *ctx, const CHAR *name, int type,
           const CHAR *publicId, const CHAR *systemId, CHAR *content)
 {
     fprintf(stdout, "SAX.entityDecl(%s, %d, %s, %s, %s)\n",
@@ -258,7 +260,7 @@
  * An attribute definition has been parsed
  */
 void
-attributeDeclDebug(xmlParserCtxtPtr ctxt, const CHAR *elem, const CHAR *name,
+attributeDeclDebug(void *ctx, const CHAR *elem, const CHAR *name,
               int type, int def, const CHAR *defaultValue,
 	      xmlEnumerationPtr tree)
 {
@@ -276,7 +278,7 @@
  * An element definition has been parsed
  */
 void
-elementDeclDebug(xmlParserCtxtPtr ctxt, const CHAR *name, int type,
+elementDeclDebug(void *ctx, const CHAR *name, int type,
 	    xmlElementContentPtr content)
 {
     fprintf(stdout, "SAX.elementDecl(%s, %d, ...)\n",
@@ -291,10 +293,9 @@
  * @systemId: The system ID of the entity
  *
  * What to do when a notation declaration has been parsed.
- * TODO Not handled currently.
  */
 void
-notationDeclDebug(xmlParserCtxtPtr ctxt, const CHAR *name,
+notationDeclDebug(void *ctx, const CHAR *name,
 	     const CHAR *publicId, const CHAR *systemId)
 {
     fprintf(stdout, "SAX.notationDecl(%s, %s, %s)\n",
@@ -310,10 +311,9 @@
  * @notationName: the name of the notation
  *
  * What to do when an unparsed entity declaration is parsed
- * TODO Create an Entity node.
  */
 void
-unparsedEntityDeclDebug(xmlParserCtxtPtr ctxt, const CHAR *name,
+unparsedEntityDeclDebug(void *ctx, const CHAR *name,
 		   const CHAR *publicId, const CHAR *systemId,
 		   const CHAR *notationName)
 {
@@ -331,7 +331,7 @@
  * Everything is available on the context, so this is useless in our case.
  */
 void
-setDocumentLocatorDebug(xmlParserCtxtPtr ctxt, xmlSAXLocatorPtr loc)
+setDocumentLocatorDebug(void *ctx, xmlSAXLocatorPtr loc)
 {
     fprintf(stdout, "SAX.setDocumentLocator()\n");
 }
@@ -343,7 +343,7 @@
  * called when the document start being processed.
  */
 void
-startDocumentDebug(xmlParserCtxtPtr ctxt)
+startDocumentDebug(void *ctx)
 {
     fprintf(stdout, "SAX.startDocument()\n");
 }
@@ -355,7 +355,7 @@
  * called when the document end has been detected.
  */
 void
-endDocumentDebug(xmlParserCtxtPtr ctxt)
+endDocumentDebug(void *ctx)
 {
     fprintf(stdout, "SAX.endDocument()\n");
 }
@@ -366,10 +366,9 @@
  * @name:  The element name
  *
  * called when an opening tag has been processed.
- * TODO We currently have a small pblm with the arguments ...
  */
 void
-startElementDebug(xmlParserCtxtPtr ctxt, const CHAR *name, const CHAR **atts)
+startElementDebug(void *ctx, const CHAR *name, const CHAR **atts)
 {
     int i;
 
@@ -391,7 +390,7 @@
  * called when the end of an element has been detected.
  */
 void
-endElementDebug(xmlParserCtxtPtr ctxt, const CHAR *name)
+endElementDebug(void *ctx, const CHAR *name)
 {
     fprintf(stdout, "SAX.endElement(%s)\n", (char *) name);
 }
@@ -406,7 +405,7 @@
  * Question: how much at a time ???
  */
 void
-charactersDebug(xmlParserCtxtPtr ctxt, const CHAR *ch, int len)
+charactersDebug(void *ctx, const CHAR *ch, int len)
 {
     int i;
 
@@ -424,7 +423,7 @@
  * called when an entity reference is detected. 
  */
 void
-referenceDebug(xmlParserCtxtPtr ctxt, const CHAR *name)
+referenceDebug(void *ctx, const CHAR *name)
 {
     fprintf(stdout, "SAX.reference(%s)\n", name);
 }
@@ -440,7 +439,7 @@
  * Question: how much at a time ???
  */
 void
-ignorableWhitespaceDebug(xmlParserCtxtPtr ctxt, const CHAR *ch, int len)
+ignorableWhitespaceDebug(void *ctx, const CHAR *ch, int len)
 {
     fprintf(stdout, "SAX.ignorableWhitespace(%.30s, %d)\n",
             (char *) ch, len);
@@ -456,7 +455,7 @@
  * A processing instruction has been parsed.
  */
 void
-processingInstructionDebug(xmlParserCtxtPtr ctxt, const CHAR *target,
+processingInstructionDebug(void *ctx, const CHAR *target,
                       const CHAR *data)
 {
     fprintf(stdout, "SAX.processingInstruction(%s, %s)\n",
@@ -471,7 +470,7 @@
  * A comment has been parsed.
  */
 void
-commentDebug(xmlParserCtxtPtr ctxt, const CHAR *value)
+commentDebug(void *ctx, const CHAR *value)
 {
     fprintf(stdout, "SAX.comment(%s)\n", value);
 }
@@ -486,7 +485,7 @@
  * extra parameters.
  */
 void
-warningDebug(xmlParserCtxtPtr ctxt, const char *msg, ...)
+warningDebug(void *ctx, const char *msg, ...)
 {
     va_list args;
 
@@ -506,7 +505,7 @@
  * extra parameters.
  */
 void
-errorDebug(xmlParserCtxtPtr ctxt, const char *msg, ...)
+errorDebug(void *ctx, const char *msg, ...)
 {
     va_list args;
 
@@ -526,7 +525,7 @@
  * extra parameters.
  */
 void
-fatalErrorDebug(xmlParserCtxtPtr ctxt, const char *msg, ...)
+fatalErrorDebug(void *ctx, const char *msg, ...)
 {
     va_list args;