Completed/revamped the SAX support, removed old namespace suppport, Daniel
diff --git a/include/libxml/entities.h b/include/libxml/entities.h
index 99ce163..8977054 100644
--- a/include/libxml/entities.h
+++ b/include/libxml/entities.h
@@ -9,7 +9,7 @@
#ifndef __XML_ENTITIES_H__
#define __XML_ENTITIES_H__
-#include "parser.h"
+#include "tree.h"
#ifdef __cplusplus
extern "C" {
@@ -56,6 +56,8 @@
* External functions :
*/
+#include "parser.h"
+
void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type,
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index 3dc8445..3e433a2 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -51,8 +51,12 @@
typedef struct _xmlParserCtxt {
struct xmlSAXHandler *sax; /* The SAX handler */
- xmlDocPtr doc; /* the document being built */
+ void *userData; /* the document being built */
+ xmlDocPtr myDoc; /* the document being built */
int wellFormed; /* is the document well formed */
+ const CHAR *version; /* the XML version string */
+ const CHAR *encoding; /* encoding, if any */
+ int standalone; /* standalone document */
/* Input stream stack */
xmlParserInputPtr input; /* Current input stream */
@@ -89,10 +93,24 @@
* a SAX Exception.
*/
+#include "entities.h"
+
typedef xmlParserInputPtr (*resolveEntitySAXFunc) (xmlParserCtxtPtr ctxt,
const CHAR *publicId, const CHAR *systemId);
+typedef void (*internalSubsetSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *name,
+ const CHAR *ExternalID, const CHAR *SystemID);
+typedef xmlEntityPtr (*getEntitySAXFunc) (xmlParserCtxtPtr ctxt,
+ const CHAR *name);
+typedef void (*entityDeclSAXFunc) (xmlParserCtxtPtr ctxt,
+ const CHAR *name, int type, const CHAR *publicId,
+ const CHAR *systemId, CHAR *content);
typedef void (*notationDeclSAXFunc)(xmlParserCtxtPtr ctxt, const CHAR *name,
const CHAR *publicId, const CHAR *systemId);
+typedef void (*attributeDeclSAXFunc)(xmlParserCtxtPtr ctxt, const CHAR *elem,
+ const CHAR *name, int type, int def,
+ const CHAR *defaultValue, xmlEnumerationPtr tree);
+typedef void (*elementDeclSAXFunc)(xmlParserCtxtPtr ctxt, const CHAR *name,
+ int type, xmlElementContentPtr content);
typedef void (*unparsedEntityDeclSAXFunc)(xmlParserCtxtPtr ctxt,
const CHAR *name, const CHAR *publicId,
const CHAR *systemId, const CHAR *notationName);
@@ -100,33 +118,48 @@
xmlSAXLocatorPtr loc);
typedef void (*startDocumentSAXFunc) (xmlParserCtxtPtr ctxt);
typedef void (*endDocumentSAXFunc) (xmlParserCtxtPtr ctxt);
-typedef void (*startElementSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *name);
+typedef void (*startElementSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *name,
+ const CHAR **atts);
typedef void (*endElementSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *name);
typedef void (*attributeSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *name,
const CHAR *value);
+typedef void (*referenceSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *name);
typedef void (*charactersSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *ch,
- int start, int len);
+ int len);
typedef void (*ignorableWhitespaceSAXFunc) (xmlParserCtxtPtr ctxt,
- const CHAR *ch, int start, int len);
+ const CHAR *ch, int len);
typedef void (*processingInstructionSAXFunc) (xmlParserCtxtPtr ctxt,
const CHAR *target, const CHAR *data);
+typedef void (*commentSAXFunc) (xmlParserCtxtPtr ctxt, const CHAR *value);
typedef void (*warningSAXFunc) (xmlParserCtxtPtr ctxt, const char *msg, ...);
typedef void (*errorSAXFunc) (xmlParserCtxtPtr ctxt, const char *msg, ...);
typedef void (*fatalErrorSAXFunc) (xmlParserCtxtPtr ctxt, const char *msg, ...);
+typedef int (*isStandaloneSAXFunc) (xmlParserCtxtPtr ctxt);
+typedef int (*hasInternalSubsetSAXFunc) (xmlParserCtxtPtr ctxt);
+typedef int (*hasExternalSubsetSAXFunc) (xmlParserCtxtPtr ctxt);
typedef struct xmlSAXHandler {
+ internalSubsetSAXFunc internalSubset;
+ isStandaloneSAXFunc isStandalone;
+ hasInternalSubsetSAXFunc hasInternalSubset;
+ hasExternalSubsetSAXFunc hasExternalSubset;
resolveEntitySAXFunc resolveEntity;
+ getEntitySAXFunc getEntity;
+ entityDeclSAXFunc entityDecl;
notationDeclSAXFunc notationDecl;
+ attributeDeclSAXFunc attributeDecl;
+ elementDeclSAXFunc elementDecl;
unparsedEntityDeclSAXFunc unparsedEntityDecl;
setDocumentLocatorSAXFunc setDocumentLocator;
startDocumentSAXFunc startDocument;
endDocumentSAXFunc endDocument;
startElementSAXFunc startElement;
endElementSAXFunc endElement;
- attributeSAXFunc attribute;
+ referenceSAXFunc reference;
charactersSAXFunc characters;
ignorableWhitespaceSAXFunc ignorableWhitespace;
processingInstructionSAXFunc processingInstruction;
+ commentSAXFunc comment;
warningSAXFunc warning;
errorSAXFunc error;
fatalErrorSAXFunc fatalError;
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
index 28ef54d..75e9e13 100644
--- a/include/libxml/parserInternals.h
+++ b/include/libxml/parserInternals.h
@@ -529,6 +529,8 @@
* Namespaces.
*/
CHAR *
+xmlSplitQName(const CHAR *name, CHAR **prefix);
+CHAR *
xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt);
CHAR *
xmlNamespaceParseQName(xmlParserCtxtPtr ctxt, CHAR **prefix);
@@ -558,7 +560,7 @@
xmlParseCharData(xmlParserCtxtPtr ctxt, int cdata);
CHAR *
xmlParseExternalID(xmlParserCtxtPtr ctxt, CHAR **publicID, int strict);
-xmlNodePtr
+void
xmlParseComment(xmlParserCtxtPtr ctxt, int create);
CHAR *
xmlParsePITarget(xmlParserCtxtPtr ctxt);
@@ -601,17 +603,17 @@
xmlParsePEReference(xmlParserCtxtPtr ctxt);
void
xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt);
-xmlAttrPtr
-xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlNodePtr node);
-xmlNodePtr
+CHAR *
+xmlParseAttribute(xmlParserCtxtPtr ctxt, CHAR **value);
+void
xmlParseStartTag(xmlParserCtxtPtr ctxt);
void
-xmlParseEndTag(xmlParserCtxtPtr ctxt, xmlNsPtr *nsPtr, CHAR **tagPtr);
+xmlParseEndTag(xmlParserCtxtPtr ctxt);
void
xmlParseCDSect(xmlParserCtxtPtr ctxt);
void
xmlParseContent(xmlParserCtxtPtr ctxt);
-xmlNodePtr
+void
xmlParseElement(xmlParserCtxtPtr ctxt);
CHAR *
xmlParseVersionNum(xmlParserCtxtPtr ctxt);
@@ -628,5 +630,12 @@
void
xmlParseMisc(xmlParserCtxtPtr ctxt);
+/*
+ * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP
+ */
+extern int nodePush(xmlParserCtxtPtr ctxt, xmlNodePtr value);
+extern xmlNodePtr nodePop(xmlParserCtxtPtr ctxt);
+extern int inputPush(xmlParserCtxtPtr ctxt, xmlParserInputPtr value);
+extern xmlParserInputPtr inputPop(xmlParserCtxtPtr ctxt);
#endif /* __XML_PARSER_INTERNALS_H__ */
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index 4443836..3f00aa0 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -283,8 +283,8 @@
xmlNodePtr xmlNewText(const CHAR *content);
xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
-xmlNodePtr xmlNewDocComment(xmlDocPtr doc, CHAR *content);
-xmlNodePtr xmlNewComment(CHAR *content);
+xmlNodePtr xmlNewDocComment(xmlDocPtr doc, const CHAR *content);
+xmlNodePtr xmlNewComment(const CHAR *content);
xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
diff --git a/include/libxml/valid.h b/include/libxml/valid.h
index 14a7228..22c824a 100644
--- a/include/libxml/valid.h
+++ b/include/libxml/valid.h
@@ -54,8 +54,8 @@
typedef xmlAttributeTable *xmlAttributeTablePtr;
/* Notation */
-xmlNotationPtr xmlAddNotationDecl(xmlDtdPtr dtd, CHAR *name,
- CHAR *PublicID, CHAR *SystemID);
+xmlNotationPtr xmlAddNotationDecl(xmlDtdPtr dtd, const CHAR *name,
+ const CHAR *PublicID, const CHAR *SystemID);
xmlNotationTablePtr xmlCopyNotationTable(xmlNotationTablePtr table);
void xmlFreeNotationTable(xmlNotationTablePtr table);
void xmlDumpNotationTable(xmlNotationTablePtr table);
@@ -66,7 +66,7 @@
void xmlFreeElementContent(xmlElementContentPtr cur);
/* Element */
-xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, CHAR *name, int type,
+xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, const CHAR *name, int type,
xmlElementContentPtr content);
xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
void xmlFreeElementTable(xmlElementTablePtr table);
@@ -78,9 +78,9 @@
xmlEnumerationPtr xmlCopyEnumeration(xmlEnumerationPtr cur);
/* Attribute */
-xmlAttributePtr xmlAddAttributeDecl(xmlDtdPtr dtd, CHAR *elem,
- CHAR *name, int type, int def,
- CHAR *defaultValue, xmlEnumerationPtr tree);
+xmlAttributePtr xmlAddAttributeDecl(xmlDtdPtr dtd, const CHAR *elem,
+ const CHAR *name, int type, int def,
+ const CHAR *defaultValue, xmlEnumerationPtr tree);
xmlAttributeTablePtr xmlCopyAttributeTable(xmlAttributeTablePtr table);
void xmlFreeAttributeTable(xmlAttributeTablePtr table);
void xmlDumpAttributeTable(xmlAttributeTablePtr table);