mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
Serious upgrade of internal subset support, setup for gtk-doc, Daniel
This commit is contained in:
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
|||||||
|
Mon Feb 22 11:24:56 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
|
||||||
|
|
||||||
|
* parserInternals.h: added this header giving access to the parser
|
||||||
|
internal functions.
|
||||||
|
* doc/Makefile.am : added a rebuild target which rebuilds the full
|
||||||
|
set of documentations
|
||||||
|
* parser.[ch] tree.[ch] valid.[ch]: serious updates w.r.t. parsing
|
||||||
|
the internal subset.
|
||||||
|
* *.c *.h: modifications needed to generate the documentation using
|
||||||
|
gtk-doc, cleanup of functions blocks, reorganisation of struct
|
||||||
|
declarations.
|
||||||
|
|
||||||
Tue Feb 16 17:27:29 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
|
Tue Feb 16 17:27:29 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
|
||||||
|
|
||||||
* Makefile.am, spec, doc/Makefile.am : upgrading to 0.99.8, fixing
|
* Makefile.am, spec, doc/Makefile.am : upgrading to 0.99.8, fixing
|
||||||
|
32
SAX.c
32
SAX.c
@ -21,7 +21,7 @@
|
|||||||
*
|
*
|
||||||
* Return the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN"
|
* Return the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN"
|
||||||
*
|
*
|
||||||
* return values: a CHAR *
|
* Returns a CHAR *
|
||||||
*/
|
*/
|
||||||
const CHAR *
|
const CHAR *
|
||||||
getPublicId(xmlParserCtxtPtr ctxt)
|
getPublicId(xmlParserCtxtPtr ctxt)
|
||||||
@ -36,7 +36,7 @@ getPublicId(xmlParserCtxtPtr ctxt)
|
|||||||
* Return the system ID, basically URI or filename e.g.
|
* Return the system ID, basically URI or filename e.g.
|
||||||
* http://www.sgmlsource.com/dtds/memo.dtd
|
* http://www.sgmlsource.com/dtds/memo.dtd
|
||||||
*
|
*
|
||||||
* return values: a CHAR *
|
* Returns a CHAR *
|
||||||
*/
|
*/
|
||||||
const CHAR *
|
const CHAR *
|
||||||
getSystemId(xmlParserCtxtPtr ctxt)
|
getSystemId(xmlParserCtxtPtr ctxt)
|
||||||
@ -50,7 +50,7 @@ getSystemId(xmlParserCtxtPtr ctxt)
|
|||||||
*
|
*
|
||||||
* Return the line number of the current parsing point.
|
* Return the line number of the current parsing point.
|
||||||
*
|
*
|
||||||
* return values: an int
|
* Returns an int
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
getLineNumber(xmlParserCtxtPtr ctxt)
|
getLineNumber(xmlParserCtxtPtr ctxt)
|
||||||
@ -64,7 +64,7 @@ getLineNumber(xmlParserCtxtPtr ctxt)
|
|||||||
*
|
*
|
||||||
* Return the column number of the current parsing point.
|
* Return the column number of the current parsing point.
|
||||||
*
|
*
|
||||||
* return values: an int
|
* Returns an int
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
getColumnNumber(xmlParserCtxtPtr ctxt)
|
getColumnNumber(xmlParserCtxtPtr ctxt)
|
||||||
@ -92,7 +92,7 @@ xmlSAXLocator xmlDefaultSAXLocator = {
|
|||||||
* the ENTITY_REF nodes are built in the structure (and the parameter
|
* the ENTITY_REF nodes are built in the structure (and the parameter
|
||||||
* values).
|
* values).
|
||||||
*
|
*
|
||||||
* return values: the xmlParserInputPtr if inlined or NULL for DOM behaviour.
|
* Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
|
||||||
*/
|
*/
|
||||||
xmlParserInputPtr
|
xmlParserInputPtr
|
||||||
resolveEntity(xmlParserCtxtPtr ctxt, const CHAR *publicId, const CHAR *systemId)
|
resolveEntity(xmlParserCtxtPtr ctxt, const CHAR *publicId, const CHAR *systemId)
|
||||||
@ -114,8 +114,6 @@ resolveEntity(xmlParserCtxtPtr ctxt, const CHAR *publicId, const CHAR *systemId)
|
|||||||
*
|
*
|
||||||
* What to do when a notation declaration has been parsed.
|
* What to do when a notation declaration has been parsed.
|
||||||
* TODO Not handled currently.
|
* TODO Not handled currently.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
notationDecl(xmlParserCtxtPtr ctxt, const CHAR *name,
|
notationDecl(xmlParserCtxtPtr ctxt, const CHAR *name,
|
||||||
@ -136,8 +134,6 @@ notationDecl(xmlParserCtxtPtr ctxt, const CHAR *name,
|
|||||||
*
|
*
|
||||||
* What to do when an unparsed entity declaration is parsed
|
* What to do when an unparsed entity declaration is parsed
|
||||||
* TODO Create an Entity node.
|
* TODO Create an Entity node.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
unparsedEntityDecl(xmlParserCtxtPtr ctxt, const CHAR *name,
|
unparsedEntityDecl(xmlParserCtxtPtr ctxt, const CHAR *name,
|
||||||
@ -157,8 +153,6 @@ unparsedEntityDecl(xmlParserCtxtPtr ctxt, const CHAR *name,
|
|||||||
*
|
*
|
||||||
* Receive the document locator at startup, actually xmlDefaultSAXLocator
|
* Receive the document locator at startup, actually xmlDefaultSAXLocator
|
||||||
* Everything is available on the context, so this is useless in our case.
|
* Everything is available on the context, so this is useless in our case.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
setDocumentLocator(xmlParserCtxtPtr ctxt, xmlSAXLocatorPtr loc)
|
setDocumentLocator(xmlParserCtxtPtr ctxt, xmlSAXLocatorPtr loc)
|
||||||
@ -173,8 +167,6 @@ setDocumentLocator(xmlParserCtxtPtr ctxt, xmlSAXLocatorPtr loc)
|
|||||||
* @ctxt: An XML parser context
|
* @ctxt: An XML parser context
|
||||||
*
|
*
|
||||||
* called when the document start being processed.
|
* called when the document start being processed.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
startDocument(xmlParserCtxtPtr ctxt)
|
startDocument(xmlParserCtxtPtr ctxt)
|
||||||
@ -189,8 +181,6 @@ startDocument(xmlParserCtxtPtr ctxt)
|
|||||||
* @ctxt: An XML parser context
|
* @ctxt: An XML parser context
|
||||||
*
|
*
|
||||||
* called when the document end has been detected.
|
* called when the document end has been detected.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
endDocument(xmlParserCtxtPtr ctxt)
|
endDocument(xmlParserCtxtPtr ctxt)
|
||||||
@ -207,8 +197,6 @@ endDocument(xmlParserCtxtPtr ctxt)
|
|||||||
*
|
*
|
||||||
* called when an opening tag has been processed.
|
* called when an opening tag has been processed.
|
||||||
* TODO We currently have a small pblm with the arguments ...
|
* TODO We currently have a small pblm with the arguments ...
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
startElement(xmlParserCtxtPtr ctxt, const CHAR *name)
|
startElement(xmlParserCtxtPtr ctxt, const CHAR *name)
|
||||||
@ -224,8 +212,6 @@ startElement(xmlParserCtxtPtr ctxt, const CHAR *name)
|
|||||||
* @name: The element name
|
* @name: The element name
|
||||||
*
|
*
|
||||||
* called when the end of an element has been detected.
|
* called when the end of an element has been detected.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
endElement(xmlParserCtxtPtr ctxt, const CHAR *name)
|
endElement(xmlParserCtxtPtr ctxt, const CHAR *name)
|
||||||
@ -245,8 +231,6 @@ endElement(xmlParserCtxtPtr ctxt, const CHAR *name)
|
|||||||
* The default handling is to convert the attribute into an
|
* The default handling is to convert the attribute into an
|
||||||
* DOM subtree and past it in a new xmlAttr element added to
|
* DOM subtree and past it in a new xmlAttr element added to
|
||||||
* the element.
|
* the element.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
attribute(xmlParserCtxtPtr ctxt, const CHAR *name, const CHAR *value)
|
attribute(xmlParserCtxtPtr ctxt, const CHAR *name, const CHAR *value)
|
||||||
@ -265,8 +249,6 @@ attribute(xmlParserCtxtPtr ctxt, const CHAR *name, const CHAR *value)
|
|||||||
*
|
*
|
||||||
* receiving some chars from the parser.
|
* receiving some chars from the parser.
|
||||||
* Question: how much at a time ???
|
* Question: how much at a time ???
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
characters(xmlParserCtxtPtr ctxt, const CHAR *ch, int start, int len)
|
characters(xmlParserCtxtPtr ctxt, const CHAR *ch, int start, int len)
|
||||||
@ -304,8 +286,6 @@ characters(xmlParserCtxtPtr ctxt, const CHAR *ch, int start, int len)
|
|||||||
*
|
*
|
||||||
* receiving some ignorable whitespaces from the parser.
|
* receiving some ignorable whitespaces from the parser.
|
||||||
* Question: how much at a time ???
|
* Question: how much at a time ???
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ignorableWhitespace(xmlParserCtxtPtr ctxt, const CHAR *ch, int start, int len)
|
ignorableWhitespace(xmlParserCtxtPtr ctxt, const CHAR *ch, int start, int len)
|
||||||
@ -323,8 +303,6 @@ ignorableWhitespace(xmlParserCtxtPtr ctxt, const CHAR *ch, int start, int len)
|
|||||||
* @len: the number of CHAR
|
* @len: the number of CHAR
|
||||||
*
|
*
|
||||||
* A processing instruction has been parsed.
|
* A processing instruction has been parsed.
|
||||||
*
|
|
||||||
* return values:
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
processingInstruction(xmlParserCtxtPtr ctxt, const CHAR *target,
|
processingInstruction(xmlParserCtxtPtr ctxt, const CHAR *target,
|
||||||
|
@ -34,6 +34,13 @@ maintainer-clean-local: clean
|
|||||||
docdatadir = $(datadir)/aclocal
|
docdatadir = $(datadir)/aclocal
|
||||||
docdata_DATA = xml.html structure.gif DOM.gif
|
docdata_DATA = xml.html structure.gif DOM.gif
|
||||||
|
|
||||||
|
gnome-xml-decl-list.txt : templates
|
||||||
|
|
||||||
|
gnome-xml-sections.txt : scan
|
||||||
|
cp gnome-xml-decl-list.txt gnome-xml-sections.txt
|
||||||
|
|
||||||
|
rebuild: gnome-xml-sections.txt templates sgml html
|
||||||
|
|
||||||
#install-data-local:
|
#install-data-local:
|
||||||
# install -d -m 0755 $(TARGET_DIR)
|
# install -d -m 0755 $(TARGET_DIR)
|
||||||
# install -m 0644 xml.html structure.gif DOM.gif $(TARGET_DIR)
|
# install -m 0644 xml.html structure.gif DOM.gif $(TARGET_DIR)
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
*
|
*
|
||||||
* Take a block of ISO Latin 1 chars in and try to convert it to an UTF-8
|
* Take a block of ISO Latin 1 chars in and try to convert it to an UTF-8
|
||||||
* block of chars out.
|
* block of chars out.
|
||||||
* return values: number of byte written, or -1 by lack of space.
|
* Returns the number of byte written, or -1 by lack of space.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
isolat1ToUTF8(unsigned char* out, int outlen, unsigned char* in, int inlen)
|
isolat1ToUTF8(unsigned char* out, int outlen, unsigned char* in, int inlen)
|
||||||
@ -77,7 +77,7 @@ isolat1ToUTF8(unsigned char* out, int outlen, unsigned char* in, int inlen)
|
|||||||
* Take a block of UTF-8 chars in and try to convert it to an ISO Latin 1
|
* Take a block of UTF-8 chars in and try to convert it to an ISO Latin 1
|
||||||
* block of chars out.
|
* block of chars out.
|
||||||
* TODO: need a fallback mechanism ...
|
* TODO: need a fallback mechanism ...
|
||||||
* return values: the number of byte written, or -1 by lack of space, or -2
|
* Returns the number of byte written, or -1 by lack of space, or -2
|
||||||
* if the transcoding failed.
|
* if the transcoding failed.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
@ -112,7 +112,7 @@ UTF8Toisolat1(unsigned char* out, int outlen, unsigned char* in, int inlen)
|
|||||||
*
|
*
|
||||||
* Take a block of UTF-16 ushorts in and try to convert it to an UTF-8
|
* Take a block of UTF-16 ushorts in and try to convert it to an UTF-8
|
||||||
* block of chars out.
|
* block of chars out.
|
||||||
* return values: number of byte written, or -1 by lack of space.
|
* Returns the number of byte written, or -1 by lack of space.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
UTF16ToUTF8(unsigned char* out, int outlen, unsigned short* in, int inlen)
|
UTF16ToUTF8(unsigned char* out, int outlen, unsigned short* in, int inlen)
|
||||||
@ -161,7 +161,7 @@ UTF16ToUTF8(unsigned char* out, int outlen, unsigned short* in, int inlen)
|
|||||||
* Take a block of UTF-8 chars in and try to convert it to an UTF-16
|
* Take a block of UTF-8 chars in and try to convert it to an UTF-16
|
||||||
* block of chars out.
|
* block of chars out.
|
||||||
* TODO: need a fallback mechanism ...
|
* TODO: need a fallback mechanism ...
|
||||||
* return values: the number of byte written, or -1 by lack of space, or -2
|
* Returns the number of byte written, or -1 by lack of space, or -2
|
||||||
* if the transcoding failed.
|
* if the transcoding failed.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
|
12
entities.c
12
entities.c
@ -154,7 +154,7 @@ void xmlInitializePredefinedEntities(void) {
|
|||||||
*
|
*
|
||||||
* Check whether this name is an predefined entity.
|
* Check whether this name is an predefined entity.
|
||||||
*
|
*
|
||||||
* return values: NULL if not, othervise the entity
|
* Returns NULL if not, othervise the entity
|
||||||
*/
|
*/
|
||||||
xmlEntityPtr
|
xmlEntityPtr
|
||||||
xmlGetPredefinedEntity(const CHAR *name) {
|
xmlGetPredefinedEntity(const CHAR *name) {
|
||||||
@ -241,7 +241,7 @@ xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
|
|||||||
* Do an entity lookup in the Dtd entity hash table and
|
* Do an entity lookup in the Dtd entity hash table and
|
||||||
* returns the corresponding entity, if found.
|
* returns the corresponding entity, if found.
|
||||||
*
|
*
|
||||||
* return values: A pointer to the entity structure or NULL if not found.
|
* Returns A pointer to the entity structure or NULL if not found.
|
||||||
*/
|
*/
|
||||||
xmlEntityPtr
|
xmlEntityPtr
|
||||||
xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name) {
|
xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name) {
|
||||||
@ -268,7 +268,7 @@ xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name) {
|
|||||||
* returns the corrsponding entity, otherwise a lookup is done
|
* returns the corrsponding entity, otherwise a lookup is done
|
||||||
* in the predefined entities too.
|
* in the predefined entities too.
|
||||||
*
|
*
|
||||||
* return values: A pointer to the entity structure or NULL if not found.
|
* Returns A pointer to the entity structure or NULL if not found.
|
||||||
*/
|
*/
|
||||||
xmlEntityPtr
|
xmlEntityPtr
|
||||||
xmlGetDocEntity(xmlDocPtr doc, const CHAR *name) {
|
xmlGetDocEntity(xmlDocPtr doc, const CHAR *name) {
|
||||||
@ -317,7 +317,7 @@ xmlGetDocEntity(xmlDocPtr doc, const CHAR *name) {
|
|||||||
* TODO This routine is not reentrant and this will be changed, the interface
|
* TODO This routine is not reentrant and this will be changed, the interface
|
||||||
* should not be modified though.
|
* should not be modified though.
|
||||||
*
|
*
|
||||||
* return values: A newly allocated string with the substitution done.
|
* Returns A newly allocated string with the substitution done.
|
||||||
*/
|
*/
|
||||||
CHAR *
|
CHAR *
|
||||||
xmlEncodeEntities(xmlDocPtr doc, const CHAR *input) {
|
xmlEncodeEntities(xmlDocPtr doc, const CHAR *input) {
|
||||||
@ -423,7 +423,7 @@ xmlEncodeEntities(xmlDocPtr doc, const CHAR *input) {
|
|||||||
*
|
*
|
||||||
* create and initialize an empty entities hash table.
|
* create and initialize an empty entities hash table.
|
||||||
*
|
*
|
||||||
* return values: the xmlEntitiesTablePtr just created or NULL in case of error.
|
* Returns the xmlEntitiesTablePtr just created or NULL in case of error.
|
||||||
*/
|
*/
|
||||||
xmlEntitiesTablePtr
|
xmlEntitiesTablePtr
|
||||||
xmlCreateEntitiesTable(void) {
|
xmlCreateEntitiesTable(void) {
|
||||||
@ -474,7 +474,7 @@ xmlFreeEntitiesTable(xmlEntitiesTablePtr table) {
|
|||||||
*
|
*
|
||||||
* Build a copy of an entity table.
|
* Build a copy of an entity table.
|
||||||
*
|
*
|
||||||
* return values: the new xmlEntitiesTablePtr or NULL in case of error.
|
* Returns the new xmlEntitiesTablePtr or NULL in case of error.
|
||||||
*/
|
*/
|
||||||
xmlEntitiesTablePtr
|
xmlEntitiesTablePtr
|
||||||
xmlCopyEntitiesTable(xmlEntitiesTablePtr table) {
|
xmlCopyEntitiesTable(xmlEntitiesTablePtr table) {
|
||||||
|
30
entities.h
30
entities.h
@ -34,7 +34,8 @@ typedef struct xmlEntity {
|
|||||||
const CHAR *ExternalID; /* External identifier for PUBLIC Entity */
|
const CHAR *ExternalID; /* External identifier for PUBLIC Entity */
|
||||||
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC Entity */
|
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC Entity */
|
||||||
CHAR *content; /* The entity content or ndata if unparsed */
|
CHAR *content; /* The entity content or ndata if unparsed */
|
||||||
} xmlEntity, *xmlEntityPtr;
|
} xmlEntity;
|
||||||
|
typedef xmlEntity *xmlEntityPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ALl entities are stored in a table there is one table per DTD
|
* ALl entities are stored in a table there is one table per DTD
|
||||||
@ -47,28 +48,29 @@ typedef struct xmlEntitiesTable {
|
|||||||
int nb_entities; /* number of elements stored */
|
int nb_entities; /* number of elements stored */
|
||||||
int max_entities; /* maximum number of elements */
|
int max_entities; /* maximum number of elements */
|
||||||
xmlEntityPtr table; /* the table of entities */
|
xmlEntityPtr table; /* the table of entities */
|
||||||
} xmlEntitiesTable, *xmlEntitiesTablePtr;
|
} xmlEntitiesTable;
|
||||||
|
typedef xmlEntitiesTable *xmlEntitiesTablePtr;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* External functions :
|
* External functions :
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
|
void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
||||||
extern void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type,
|
void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
||||||
extern xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name);
|
xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name);
|
||||||
extern xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name);
|
xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name);
|
||||||
extern xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name);
|
xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name);
|
||||||
extern CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
|
CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
|
||||||
extern xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
|
xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
|
||||||
extern xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
extern void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
|
void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
extern void xmlDumpEntitiesTable(xmlEntitiesTablePtr table);
|
void xmlDumpEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
extern xmlParserInputPtr xmlNewEntityInputStream(xmlParserCtxtPtr ctxt,
|
xmlParserInputPtr xmlNewEntityInputStream(xmlParserCtxtPtr ctxt,
|
||||||
xmlEntityPtr entity);
|
xmlEntityPtr entity);
|
||||||
extern xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
6
error.c
6
error.c
@ -38,12 +38,12 @@ xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...)
|
|||||||
va_end(ap);
|
va_end(ap);
|
||||||
cur = ctxt->input->cur;
|
cur = ctxt->input->cur;
|
||||||
base = ctxt->input->base;
|
base = ctxt->input->base;
|
||||||
while ((*cur == '\n') || (*cur == '\r')) {
|
while ((cur > base) && ((*cur == '\n') || (*cur == '\r'))) {
|
||||||
cur--;
|
cur--;
|
||||||
base--;
|
base--;
|
||||||
}
|
}
|
||||||
n = 0;
|
n = 0;
|
||||||
while ((n++ < 60) && (cur >= base) && (*cur != '\n') && (*cur != '\r'))
|
while ((n++ < 60) && (cur > base) && (*cur != '\n') && (*cur != '\r'))
|
||||||
cur--;
|
cur--;
|
||||||
if ((*cur == '\n') || (*cur == '\r')) cur++;
|
if ((*cur == '\n') || (*cur == '\r')) cur++;
|
||||||
base = cur;
|
base = cur;
|
||||||
@ -93,7 +93,7 @@ xmlParserWarning(xmlParserCtxtPtr ctxt, const char *msg, ...)
|
|||||||
cur = ctxt->input->cur;
|
cur = ctxt->input->cur;
|
||||||
base = ctxt->input->base;
|
base = ctxt->input->base;
|
||||||
n = 0;
|
n = 0;
|
||||||
while ((n++ < 60) && (cur >= base) && (*cur != '\n') && (*cur != '\r'))
|
while ((n++ < 60) && (cur > base) && (*cur != '\n') && (*cur != '\r'))
|
||||||
cur--;
|
cur--;
|
||||||
if ((*cur != '\n') || (*cur != '\r')) cur++;
|
if ((*cur != '\n') || (*cur != '\r')) cur++;
|
||||||
base = cur;
|
base = cur;
|
||||||
|
@ -34,7 +34,8 @@ typedef struct xmlEntity {
|
|||||||
const CHAR *ExternalID; /* External identifier for PUBLIC Entity */
|
const CHAR *ExternalID; /* External identifier for PUBLIC Entity */
|
||||||
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC Entity */
|
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC Entity */
|
||||||
CHAR *content; /* The entity content or ndata if unparsed */
|
CHAR *content; /* The entity content or ndata if unparsed */
|
||||||
} xmlEntity, *xmlEntityPtr;
|
} xmlEntity;
|
||||||
|
typedef xmlEntity *xmlEntityPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ALl entities are stored in a table there is one table per DTD
|
* ALl entities are stored in a table there is one table per DTD
|
||||||
@ -47,28 +48,29 @@ typedef struct xmlEntitiesTable {
|
|||||||
int nb_entities; /* number of elements stored */
|
int nb_entities; /* number of elements stored */
|
||||||
int max_entities; /* maximum number of elements */
|
int max_entities; /* maximum number of elements */
|
||||||
xmlEntityPtr table; /* the table of entities */
|
xmlEntityPtr table; /* the table of entities */
|
||||||
} xmlEntitiesTable, *xmlEntitiesTablePtr;
|
} xmlEntitiesTable;
|
||||||
|
typedef xmlEntitiesTable *xmlEntitiesTablePtr;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* External functions :
|
* External functions :
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
|
void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
||||||
extern void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type,
|
void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
|
||||||
extern xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name);
|
xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name);
|
||||||
extern xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name);
|
xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name);
|
||||||
extern xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name);
|
xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name);
|
||||||
extern CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
|
CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
|
||||||
extern xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
|
xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
|
||||||
extern xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
extern void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
|
void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
extern void xmlDumpEntitiesTable(xmlEntitiesTablePtr table);
|
void xmlDumpEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
extern xmlParserInputPtr xmlNewEntityInputStream(xmlParserCtxtPtr ctxt,
|
xmlParserInputPtr xmlNewEntityInputStream(xmlParserCtxtPtr ctxt,
|
||||||
xmlEntityPtr entity);
|
xmlEntityPtr entity);
|
||||||
extern xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -26,24 +26,28 @@ typedef struct xmlParserInput {
|
|||||||
const CHAR *cur; /* Current char being parsed */
|
const CHAR *cur; /* Current char being parsed */
|
||||||
int line; /* Current line */
|
int line; /* Current line */
|
||||||
int col; /* Current column */
|
int col; /* Current column */
|
||||||
} xmlParserInput, *xmlParserInputPtr;
|
} xmlParserInput;
|
||||||
|
typedef xmlParserInput *xmlParserInputPtr;
|
||||||
|
|
||||||
typedef struct xmlParserNodeInfo {
|
typedef struct _xmlParserNodeInfo {
|
||||||
const struct xmlNode* node;
|
const struct xmlNode* node;
|
||||||
/* Position & line # that text that created the node begins & ends on */
|
/* Position & line # that text that created the node begins & ends on */
|
||||||
unsigned long begin_pos;
|
unsigned long begin_pos;
|
||||||
unsigned long begin_line;
|
unsigned long begin_line;
|
||||||
unsigned long end_pos;
|
unsigned long end_pos;
|
||||||
unsigned long end_line;
|
unsigned long end_line;
|
||||||
} xmlParserNodeInfo;
|
} _xmlParserNodeInfo;
|
||||||
|
typedef _xmlParserNodeInfo xmlParserNodeInfo;
|
||||||
|
|
||||||
typedef struct xmlParserNodeInfoSeq {
|
typedef struct xmlParserNodeInfoSeq {
|
||||||
unsigned long maximum;
|
unsigned long maximum;
|
||||||
unsigned long length;
|
unsigned long length;
|
||||||
xmlParserNodeInfo* buffer;
|
xmlParserNodeInfo* buffer;
|
||||||
} xmlParserNodeInfoSeq, *xmlParserNodeInfoSeqPtr;
|
} _xmlParserNodeInfoSeq;
|
||||||
|
typedef _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
|
||||||
|
typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
|
||||||
|
|
||||||
typedef struct xmlParserCtxt {
|
typedef struct _xmlParserCtxt {
|
||||||
struct xmlSAXHandler *sax; /* The SAX handler */
|
struct xmlSAXHandler *sax; /* The SAX handler */
|
||||||
xmlDocPtr doc; /* the document being built */
|
xmlDocPtr doc; /* the document being built */
|
||||||
int wellFormed; /* is the document well formed */
|
int wellFormed; /* is the document well formed */
|
||||||
@ -62,7 +66,9 @@ typedef struct xmlParserCtxt {
|
|||||||
|
|
||||||
int record_info; /* Whether node info should be kept */
|
int record_info; /* Whether node info should be kept */
|
||||||
xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
|
xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
|
||||||
} xmlParserCtxt, *xmlParserCtxtPtr;
|
} _xmlParserCtxt;
|
||||||
|
typedef _xmlParserCtxt xmlParserCtxt;
|
||||||
|
typedef xmlParserCtxt *xmlParserCtxtPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a SAX Locator.
|
* a SAX Locator.
|
||||||
@ -73,7 +79,9 @@ typedef struct xmlSAXLocator {
|
|||||||
const CHAR *(*getSystemId)(xmlParserCtxtPtr ctxt);
|
const CHAR *(*getSystemId)(xmlParserCtxtPtr ctxt);
|
||||||
int (*getLineNumber)(xmlParserCtxtPtr ctxt);
|
int (*getLineNumber)(xmlParserCtxtPtr ctxt);
|
||||||
int (*getColumnNumber)(xmlParserCtxtPtr ctxt);
|
int (*getColumnNumber)(xmlParserCtxtPtr ctxt);
|
||||||
} xmlSAXLocator, *xmlSAXLocatorPtr;
|
} _xmlSAXLocator;
|
||||||
|
typedef _xmlSAXLocator xmlSAXLocator;
|
||||||
|
typedef xmlSAXLocator *xmlSAXLocatorPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a SAX Exception.
|
* a SAX Exception.
|
||||||
@ -120,7 +128,8 @@ typedef struct xmlSAXHandler {
|
|||||||
warningSAXFunc warning;
|
warningSAXFunc warning;
|
||||||
errorSAXFunc error;
|
errorSAXFunc error;
|
||||||
fatalErrorSAXFunc fatalError;
|
fatalErrorSAXFunc fatalError;
|
||||||
} xmlSAXHandler, *xmlSAXHandlerPtr;
|
} xmlSAXHandler;
|
||||||
|
typedef xmlSAXHandler *xmlSAXHandlerPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global variables: just the SAX interface tables we are looking for full
|
* Global variables: just the SAX interface tables we are looking for full
|
||||||
@ -130,61 +139,58 @@ extern xmlSAXLocator xmlDefaultSAXLocator;
|
|||||||
extern xmlSAXHandler xmlDefaultSAXHandler;
|
extern xmlSAXHandler xmlDefaultSAXHandler;
|
||||||
|
|
||||||
#include "entities.h"
|
#include "entities.h"
|
||||||
|
#include "error.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CHAR handling
|
* CHAR handling
|
||||||
*/
|
*/
|
||||||
extern CHAR *xmlStrdup(const CHAR *input);
|
CHAR *xmlStrdup(const CHAR *cur);
|
||||||
extern CHAR *xmlStrndup(const CHAR *input, int n);
|
CHAR *xmlStrndup(const CHAR *cur, int len);
|
||||||
extern CHAR *xmlStrchr(const CHAR *str, CHAR val);
|
CHAR *xmlStrchr(const CHAR *str, CHAR val);
|
||||||
extern int xmlStrcmp(const CHAR *str1, const CHAR *str2);
|
int xmlStrcmp(const CHAR *str1, const CHAR *str2);
|
||||||
extern int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
|
int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
|
||||||
extern int xmlStrlen(const CHAR *str);
|
int xmlStrlen(const CHAR *str);
|
||||||
extern CHAR *xmlStrcat(CHAR *cur, const CHAR *add);
|
CHAR *xmlStrcat(CHAR *cur, const CHAR *add);
|
||||||
extern CHAR *xmlStrncat(CHAR *cur, const CHAR *add, int len);
|
CHAR *xmlStrncat(CHAR *cur, const CHAR *add, int len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interfaces
|
* Interfaces
|
||||||
*/
|
*/
|
||||||
extern xmlDocPtr xmlParseDoc(CHAR *cur);
|
xmlDocPtr xmlParseDoc(CHAR *cur);
|
||||||
extern xmlDocPtr xmlParseMemory(char *buffer, int size);
|
xmlDocPtr xmlParseMemory(char *buffer, int size);
|
||||||
extern xmlDocPtr xmlParseFile(const char *filename);
|
xmlDocPtr xmlParseFile(const char *filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Recovery mode
|
* Recovery mode
|
||||||
*/
|
*/
|
||||||
extern xmlDocPtr xmlRecoverDoc(CHAR *cur);
|
xmlDocPtr xmlRecoverDoc(CHAR *cur);
|
||||||
extern xmlDocPtr xmlRecoverMemory(char *buffer, int size);
|
xmlDocPtr xmlRecoverMemory(char *buffer, int size);
|
||||||
extern xmlDocPtr xmlRecoverFile(const char *filename);
|
xmlDocPtr xmlRecoverFile(const char *filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal routines
|
* Internal routines
|
||||||
*/
|
*/
|
||||||
extern int xmlParseDocument(xmlParserCtxtPtr ctxt);
|
int xmlParseDocument(xmlParserCtxtPtr ctxt);
|
||||||
extern xmlDocPtr xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery);
|
xmlDocPtr xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery);
|
||||||
extern xmlDocPtr xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer,
|
xmlDocPtr xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer,
|
||||||
int size, int recovery);
|
int size, int recovery);
|
||||||
extern xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
|
xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
|
||||||
int recovery);
|
int recovery);
|
||||||
extern void xmlInitParserCtxt(xmlParserCtxtPtr ctx);
|
void xmlInitParserCtxt(xmlParserCtxtPtr ctxt);
|
||||||
extern void xmlClearParserCtxt(xmlParserCtxtPtr ctx);
|
void xmlClearParserCtxt(xmlParserCtxtPtr ctxt);
|
||||||
extern void xmlSetupParserForBuffer(xmlParserCtxtPtr ctx, const CHAR* buffer,
|
void xmlSetupParserForBuffer(xmlParserCtxtPtr ctxt, const CHAR* buffer,
|
||||||
const char* filename);
|
const char* filename);
|
||||||
|
|
||||||
extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
|
const xmlParserNodeInfo* xmlParserFindNodeInfo(const xmlParserCtxt* ctxt,
|
||||||
|
const xmlNode* node);
|
||||||
extern const xmlParserNodeInfo* xmlParserFindNodeInfo(const xmlParserCtxt* c,
|
void xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
||||||
const xmlNode* node);
|
void xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
||||||
extern void xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
|
||||||
extern void xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
|
||||||
unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeq* seq,
|
unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeq* seq,
|
||||||
const xmlNode* node);
|
const xmlNode* node);
|
||||||
extern void xmlParserAddNodeInfo(xmlParserCtxtPtr ctx,
|
void xmlParserAddNodeInfo(xmlParserCtxtPtr ctxt,
|
||||||
const xmlParserNodeInfo* info);
|
const xmlParserNodeInfo* info);
|
||||||
|
|
||||||
extern void xmlParserWarning(xmlParserCtxtPtr ctxt, const char *msg, ...);
|
void xmlDefaultSAXHandlerInit(void);
|
||||||
extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
|
|
||||||
extern void xmlDefaultSAXHandlerInit(void);
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
128
include/libxml/parserInternals.h
Normal file
128
include/libxml/parserInternals.h
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/*
|
||||||
|
* parserInternals.h : internals routines exported by the parser.
|
||||||
|
*
|
||||||
|
* See Copyright for the status of this software.
|
||||||
|
*
|
||||||
|
* Daniel.Veillard@w3.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __XML_PARSER_INTERNALS_H__
|
||||||
|
#define __XML_PARSER_INTERNALS_H__
|
||||||
|
|
||||||
|
#include "parser.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Entities
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlHandleEntity(xmlParserCtxtPtr ctxt, xmlEntityPtr entity);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Namespaces.
|
||||||
|
*/
|
||||||
|
CHAR *
|
||||||
|
xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlNamespaceParseQName(xmlParserCtxtPtr ctxt, CHAR **prefix);
|
||||||
|
CHAR *
|
||||||
|
xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseQuotedString(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseNamespace(xmlParserCtxtPtr ctxt);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generic production rules
|
||||||
|
*/
|
||||||
|
CHAR *
|
||||||
|
xmlParseName(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseNmtoken(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEntityValue(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseAttValue(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseSystemLiteral(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParsePubidLiteral(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseCharData(xmlParserCtxtPtr ctxt, int cdata);
|
||||||
|
CHAR *
|
||||||
|
xmlParseExternalID(xmlParserCtxtPtr ctxt, CHAR **publicID, int strict);
|
||||||
|
xmlNodePtr
|
||||||
|
xmlParseComment(xmlParserCtxtPtr ctxt, int create);
|
||||||
|
CHAR *
|
||||||
|
xmlParsePITarget(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParsePI(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseNotationDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseEntityDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseDefaultDecl(xmlParserCtxtPtr ctxt, CHAR **value);
|
||||||
|
xmlEnumerationPtr
|
||||||
|
xmlParseNotationType(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlEnumerationPtr
|
||||||
|
xmlParseEnumerationType(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseEnumeratedType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);
|
||||||
|
int
|
||||||
|
xmlParseAttributeType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);
|
||||||
|
void
|
||||||
|
xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlElementContentPtr
|
||||||
|
xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlElementContentPtr
|
||||||
|
xmlParseElementChildrenContentDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, CHAR *name,
|
||||||
|
xmlElementContentPtr *result);
|
||||||
|
int
|
||||||
|
xmlParseElementDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseMarkupDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseCharRef(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEntityRef(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseReference(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParsePEReference(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlAttrPtr
|
||||||
|
xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlNodePtr node);
|
||||||
|
xmlNodePtr
|
||||||
|
xmlParseStartTag(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseEndTag(xmlParserCtxtPtr ctxt, xmlNsPtr *nsPtr, CHAR **tagPtr);
|
||||||
|
void
|
||||||
|
xmlParseCDSect(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseContent(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlNodePtr
|
||||||
|
xmlParseElement(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseVersionNum(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseVersionInfo(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEncName(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEncodingDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseSDDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseXMLDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseMisc(xmlParserCtxtPtr ctxt);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __XML_PARSER_INTERNALS_H__ */
|
@ -55,41 +55,67 @@ typedef unsigned char CHAR;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* a DTD Notation definition
|
* a DTD Notation definition
|
||||||
* TODO !!!!
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
typedef struct xmlNotation {
|
||||||
|
const CHAR *name; /* Notation name */
|
||||||
|
const CHAR *PublicID; /* Public identifier, if any */
|
||||||
|
const CHAR *SystemID; /* System identifier, if any */
|
||||||
|
} xmlNotation;
|
||||||
|
typedef xmlNotation *xmlNotationPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a DTD Attribute definition
|
* a DTD Attribute definition
|
||||||
* TODO !!!!
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define XML_ATTRIBUTE_NONE 1
|
typedef enum {
|
||||||
#define XML_ATTRIBUTE_REQUIRED 2
|
XML_ATTRIBUTE_CDATA = 1,
|
||||||
#define XML_ATTRIBUTE_IMPLIED 3
|
XML_ATTRIBUTE_ID,
|
||||||
#define XML_ATTRIBUTE_FIXED 4
|
XML_ATTRIBUTE_IDREF ,
|
||||||
|
XML_ATTRIBUTE_IDREFS,
|
||||||
|
XML_ATTRIBUTE_ENTITY,
|
||||||
|
XML_ATTRIBUTE_ENTITIES,
|
||||||
|
XML_ATTRIBUTE_NMTOKEN,
|
||||||
|
XML_ATTRIBUTE_NMTOKENS,
|
||||||
|
XML_ATTRIBUTE_ENUMERATION,
|
||||||
|
XML_ATTRIBUTE_NOTATION
|
||||||
|
} xmlAttributeType;
|
||||||
|
|
||||||
#define XML_ATTRIBUTE_STRING 1
|
typedef enum {
|
||||||
#define XML_ATTRIBUTE_ID 2
|
XML_ATTRIBUTE_NONE = 1,
|
||||||
#define XML_ATTRIBUTE_IDREF 3
|
XML_ATTRIBUTE_REQUIRED,
|
||||||
#define XML_ATTRIBUTE_IDREFS 4
|
XML_ATTRIBUTE_IMPLIED,
|
||||||
#define XML_ATTRIBUTE_ENTITY 5
|
XML_ATTRIBUTE_FIXED
|
||||||
#define XML_ATTRIBUTE_ENTITIES 6
|
} xmlAttributeDefault;
|
||||||
#define XML_ATTRIBUTE_NMTOKEN 7
|
|
||||||
#define XML_ATTRIBUTE_NMTOKENS 8
|
typedef struct xmlEnumeration {
|
||||||
#define XML_ATTRIBUTE_ENUMERATED 9
|
struct xmlEnumeration *next; /* next one */
|
||||||
|
const CHAR *name; /* Enumeration name */
|
||||||
|
} xmlEnumeration;
|
||||||
|
typedef xmlEnumeration *xmlEnumerationPtr;
|
||||||
|
|
||||||
|
typedef struct xmlAttribute {
|
||||||
|
const CHAR *elem; /* Element holding the attribute */
|
||||||
|
const CHAR *name; /* Attribute name */
|
||||||
|
xmlAttributeType type; /* The type */
|
||||||
|
xmlAttributeDefault def; /* the default */
|
||||||
|
const CHAR *defaultValue;/* or the default value */
|
||||||
|
xmlEnumerationPtr tree; /* or the enumeration tree if any */
|
||||||
|
} xmlAttribute;
|
||||||
|
typedef xmlAttribute *xmlAttributePtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a DTD Element definition.
|
* a DTD Element definition.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_ELEMENT_CONTENT_PCDATA=1,
|
XML_ELEMENT_CONTENT_PCDATA = 1,
|
||||||
XML_ELEMENT_CONTENT_ELEMENT,
|
XML_ELEMENT_CONTENT_ELEMENT,
|
||||||
XML_ELEMENT_CONTENT_SEQ,
|
XML_ELEMENT_CONTENT_SEQ,
|
||||||
XML_ELEMENT_CONTENT_OR
|
XML_ELEMENT_CONTENT_OR
|
||||||
} xmlElementContentType;
|
} xmlElementContentType;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_ELEMENT_CONTENT_ONCE=1,
|
XML_ELEMENT_CONTENT_ONCE = 1,
|
||||||
XML_ELEMENT_CONTENT_OPT,
|
XML_ELEMENT_CONTENT_OPT,
|
||||||
XML_ELEMENT_CONTENT_MULT,
|
XML_ELEMENT_CONTENT_MULT,
|
||||||
XML_ELEMENT_CONTENT_PLUS
|
XML_ELEMENT_CONTENT_PLUS
|
||||||
@ -101,10 +127,11 @@ typedef struct xmlElementContent {
|
|||||||
const CHAR *name; /* Element name */
|
const CHAR *name; /* Element name */
|
||||||
struct xmlElementContent *c1; /* first child */
|
struct xmlElementContent *c1; /* first child */
|
||||||
struct xmlElementContent *c2; /* second child */
|
struct xmlElementContent *c2; /* second child */
|
||||||
} xmlElementContent, *xmlElementContentPtr;
|
} xmlElementContent;
|
||||||
|
typedef xmlElementContent *xmlElementContentPtr;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_ELEMENT_TYPE_EMPTY=1,
|
XML_ELEMENT_TYPE_EMPTY = 1,
|
||||||
XML_ELEMENT_TYPE_ANY,
|
XML_ELEMENT_TYPE_ANY,
|
||||||
XML_ELEMENT_TYPE_MIXED,
|
XML_ELEMENT_TYPE_MIXED,
|
||||||
XML_ELEMENT_TYPE_ELEMENT
|
XML_ELEMENT_TYPE_ELEMENT
|
||||||
@ -114,7 +141,8 @@ typedef struct xmlElement {
|
|||||||
const CHAR *name; /* Element name */
|
const CHAR *name; /* Element name */
|
||||||
xmlElementTypeVal type; /* The type */
|
xmlElementTypeVal type; /* The type */
|
||||||
xmlElementContentPtr content; /* the allowed element content */
|
xmlElementContentPtr content; /* the allowed element content */
|
||||||
} xmlElement, *xmlElementPtr;
|
} xmlElement;
|
||||||
|
typedef xmlElement *xmlElementPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An XML namespace.
|
* An XML namespace.
|
||||||
@ -123,7 +151,7 @@ typedef struct xmlElement {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_GLOBAL_NAMESPACE=1, /* old style global namespace */
|
XML_GLOBAL_NAMESPACE = 1, /* old style global namespace */
|
||||||
XML_LOCAL_NAMESPACE /* new style local scoping */
|
XML_LOCAL_NAMESPACE /* new style local scoping */
|
||||||
} xmlNsType;
|
} xmlNsType;
|
||||||
|
|
||||||
@ -132,7 +160,8 @@ typedef struct xmlNs {
|
|||||||
xmlNsType type; /* global or local */
|
xmlNsType type; /* global or local */
|
||||||
const CHAR *href; /* URL for the namespace */
|
const CHAR *href; /* URL for the namespace */
|
||||||
const CHAR *prefix; /* prefix for the namespace */
|
const CHAR *prefix; /* prefix for the namespace */
|
||||||
} xmlNs, *xmlNsPtr;
|
} xmlNs;
|
||||||
|
typedef xmlNs *xmlNsPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An XML DtD, as defined by <!DOCTYPE.
|
* An XML DtD, as defined by <!DOCTYPE.
|
||||||
@ -141,10 +170,13 @@ typedef struct xmlDtd {
|
|||||||
const CHAR *name; /* Name of the DTD */
|
const CHAR *name; /* Name of the DTD */
|
||||||
const CHAR *ExternalID; /* External identifier for PUBLIC DTD */
|
const CHAR *ExternalID; /* External identifier for PUBLIC DTD */
|
||||||
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
|
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
|
||||||
|
void *notations; /* Hash table for notations if any */
|
||||||
void *elements; /* Hash table for elements if any */
|
void *elements; /* Hash table for elements if any */
|
||||||
|
void *attributes; /* Hash table for attributes if any */
|
||||||
void *entities; /* Hash table for entities if any */
|
void *entities; /* Hash table for entities if any */
|
||||||
/* struct xmlDtd *next; * next link for this document */
|
/* struct xmlDtd *next; * next link for this document */
|
||||||
} xmlDtd, *xmlDtdPtr;
|
} xmlDtd;
|
||||||
|
typedef xmlDtd *xmlDtdPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A attribute of an XML node.
|
* A attribute of an XML node.
|
||||||
@ -159,7 +191,8 @@ typedef struct xmlAttr {
|
|||||||
struct xmlAttr *next; /* parent->childs link */
|
struct xmlAttr *next; /* parent->childs link */
|
||||||
const CHAR *name; /* the name of the property */
|
const CHAR *name; /* the name of the property */
|
||||||
struct xmlNode *val; /* the value of the property */
|
struct xmlNode *val; /* the value of the property */
|
||||||
} xmlAttr, *xmlAttrPtr;
|
} xmlAttr;
|
||||||
|
typedef xmlAttr *xmlAttrPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A node in an XML tree.
|
* A node in an XML tree.
|
||||||
@ -181,7 +214,9 @@ typedef struct xmlNode {
|
|||||||
xmlNs *ns; /* pointer to the associated namespace */
|
xmlNs *ns; /* pointer to the associated namespace */
|
||||||
xmlNs *nsDef; /* namespace definitions on this node */
|
xmlNs *nsDef; /* namespace definitions on this node */
|
||||||
CHAR *content; /* the content */
|
CHAR *content; /* the content */
|
||||||
} xmlNode, *xmlNodePtr;
|
} _xmlNode;
|
||||||
|
typedef _xmlNode xmlNode;
|
||||||
|
typedef _xmlNode *xmlNodePtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An XML document.
|
* An XML document.
|
||||||
@ -201,7 +236,9 @@ typedef struct xmlDoc {
|
|||||||
struct xmlDtd *extSubset; /* the document external subset */
|
struct xmlDtd *extSubset; /* the document external subset */
|
||||||
struct xmlNs *oldNs; /* Global namespace, the old way */
|
struct xmlNs *oldNs; /* Global namespace, the old way */
|
||||||
struct xmlNode *root; /* the document tree */
|
struct xmlNode *root; /* the document tree */
|
||||||
} xmlDoc, *xmlDocPtr;
|
} _xmlDoc;
|
||||||
|
typedef _xmlDoc xmlDoc;
|
||||||
|
typedef xmlDoc *xmlDocPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Variables.
|
* Variables.
|
||||||
@ -213,110 +250,110 @@ extern int xmlIndentTreeOutput; /* try to indent the tree dumps */
|
|||||||
/*
|
/*
|
||||||
* Creating/freeing new structures
|
* Creating/freeing new structures
|
||||||
*/
|
*/
|
||||||
extern xmlDtdPtr xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
|
xmlDtdPtr xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID);
|
const CHAR *ExternalID, const CHAR *SystemID);
|
||||||
extern xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID);
|
const CHAR *ExternalID, const CHAR *SystemID);
|
||||||
extern void xmlFreeDtd(xmlDtdPtr cur);
|
void xmlFreeDtd(xmlDtdPtr cur);
|
||||||
extern xmlNsPtr xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *AS);
|
xmlNsPtr xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *prefix);
|
||||||
extern xmlNsPtr xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *AS);
|
xmlNsPtr xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *prefix);
|
||||||
extern void xmlFreeNs(xmlNsPtr cur);
|
void xmlFreeNs(xmlNsPtr cur);
|
||||||
extern xmlDocPtr xmlNewDoc(const CHAR *version);
|
xmlDocPtr xmlNewDoc(const CHAR *version);
|
||||||
extern void xmlFreeDoc(xmlDocPtr cur);
|
void xmlFreeDoc(xmlDocPtr cur);
|
||||||
extern xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const CHAR *name,
|
xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const CHAR *name,
|
||||||
const CHAR *value);
|
const CHAR *value);
|
||||||
extern xmlAttrPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
|
xmlAttrPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
|
||||||
const CHAR *value);
|
const CHAR *value);
|
||||||
extern void xmlFreePropList(xmlAttrPtr cur);
|
void xmlFreePropList(xmlAttrPtr cur);
|
||||||
extern void xmlFreeProp(xmlAttrPtr cur);
|
void xmlFreeProp(xmlAttrPtr cur);
|
||||||
extern xmlAttrPtr xmlCopyProp(xmlAttrPtr cur);
|
xmlAttrPtr xmlCopyProp(xmlAttrPtr cur);
|
||||||
extern xmlAttrPtr xmlCopyPropList(xmlAttrPtr cur);
|
xmlAttrPtr xmlCopyPropList(xmlAttrPtr cur);
|
||||||
extern xmlDtdPtr xmlCopyDtd(xmlDtdPtr dtd);
|
xmlDtdPtr xmlCopyDtd(xmlDtdPtr dtd);
|
||||||
extern xmlDocPtr xmlCopyDoc(xmlDocPtr doc, int recursive);
|
xmlDocPtr xmlCopyDoc(xmlDocPtr doc, int recursive);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creating new nodes
|
* Creating new nodes
|
||||||
*/
|
*/
|
||||||
extern xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
||||||
const CHAR *name, CHAR *content);
|
const CHAR *name, CHAR *content);
|
||||||
extern xmlNodePtr xmlNewNode(xmlNsPtr ns, const CHAR *name);
|
xmlNodePtr xmlNewNode(xmlNsPtr ns, const CHAR *name);
|
||||||
extern xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
|
xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
|
||||||
const CHAR *name, CHAR *content);
|
const CHAR *name, CHAR *content);
|
||||||
extern xmlNodePtr xmlNewDocText(xmlDocPtr doc, const CHAR *content);
|
xmlNodePtr xmlNewDocText(xmlDocPtr doc, const CHAR *content);
|
||||||
extern xmlNodePtr xmlNewText(const CHAR *content);
|
xmlNodePtr xmlNewText(const CHAR *content);
|
||||||
extern xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
|
xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
|
||||||
extern xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
|
xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
|
||||||
extern xmlNodePtr xmlNewDocComment(xmlDocPtr doc, CHAR *content);
|
xmlNodePtr xmlNewDocComment(xmlDocPtr doc, CHAR *content);
|
||||||
extern xmlNodePtr xmlNewComment(CHAR *content);
|
xmlNodePtr xmlNewComment(CHAR *content);
|
||||||
extern xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
|
xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
|
||||||
extern xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
|
xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
|
||||||
extern xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
|
xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Navigating
|
* Navigating
|
||||||
*/
|
*/
|
||||||
extern xmlNodePtr xmlGetLastChild(xmlNodePtr node);
|
xmlNodePtr xmlGetLastChild(xmlNodePtr parent);
|
||||||
extern int xmlNodeIsText(xmlNodePtr node);
|
int xmlNodeIsText(xmlNodePtr node);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Changing the structure
|
* Changing the structure
|
||||||
*/
|
*/
|
||||||
extern xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
|
xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
|
||||||
extern void xmlUnlinkNode(xmlNodePtr cur);
|
void xmlUnlinkNode(xmlNodePtr cur);
|
||||||
|
|
||||||
extern xmlNodePtr xmlTextMerge(xmlNodePtr first, xmlNodePtr second);
|
xmlNodePtr xmlTextMerge(xmlNodePtr first, xmlNodePtr second);
|
||||||
extern void xmlTextConcat(xmlNodePtr node, const CHAR *content, int len);
|
void xmlTextConcat(xmlNodePtr node, const CHAR *content, int len);
|
||||||
|
|
||||||
extern void xmlFreeNodeList(xmlNodePtr cur);
|
void xmlFreeNodeList(xmlNodePtr cur);
|
||||||
extern void xmlFreeNode(xmlNodePtr cur);
|
void xmlFreeNode(xmlNodePtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Namespaces
|
* Namespaces
|
||||||
*/
|
*/
|
||||||
extern xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node,
|
xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node,
|
||||||
const CHAR *nameSpace);
|
const CHAR *nameSpace);
|
||||||
extern xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node,
|
xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node,
|
||||||
const CHAR *href);
|
const CHAR *href);
|
||||||
extern void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
|
void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
|
||||||
extern xmlNsPtr xmlCopyNamespace(xmlNsPtr cur);
|
xmlNsPtr xmlCopyNamespace(xmlNsPtr cur);
|
||||||
extern xmlNsPtr xmlCopyNamespaceList(xmlNsPtr cur);
|
xmlNsPtr xmlCopyNamespaceList(xmlNsPtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Changing the content.
|
* Changing the content.
|
||||||
*/
|
*/
|
||||||
extern xmlAttrPtr xmlSetProp(xmlNodePtr node, const CHAR *name,
|
xmlAttrPtr xmlSetProp(xmlNodePtr node, const CHAR *name,
|
||||||
const CHAR *value);
|
const CHAR *value);
|
||||||
extern CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
|
CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
|
||||||
extern xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value);
|
xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value);
|
||||||
extern xmlNodePtr xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value,
|
xmlNodePtr xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value,
|
||||||
int len);
|
int len);
|
||||||
extern CHAR *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine);
|
CHAR *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine);
|
||||||
extern void xmlNodeSetContent(xmlNodePtr cur, const CHAR *content);
|
void xmlNodeSetContent(xmlNodePtr cur, const CHAR *content);
|
||||||
extern void xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
void xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
||||||
extern void xmlNodeAddContent(xmlNodePtr cur, const CHAR *content);
|
void xmlNodeAddContent(xmlNodePtr cur, const CHAR *content);
|
||||||
extern void xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
void xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
||||||
extern CHAR *xmlNodeGetContent(xmlNodePtr cur);
|
CHAR *xmlNodeGetContent(xmlNodePtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal, don't use
|
* Internal, don't use
|
||||||
*/
|
*/
|
||||||
extern void xmlBufferWriteCHAR(const CHAR *string);
|
void xmlBufferWriteCHAR(const CHAR *string);
|
||||||
extern void xmlBufferWriteChar(const char *string);
|
void xmlBufferWriteChar(const char *string);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saving
|
* Saving
|
||||||
*/
|
*/
|
||||||
extern void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
|
void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
|
||||||
extern void xmlDocDump(FILE *f, xmlDocPtr doc);
|
void xmlDocDump(FILE *f, xmlDocPtr cur);
|
||||||
int xmlSaveFile(const char *filename, xmlDocPtr cur);
|
int xmlSaveFile(const char *filename, xmlDocPtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compression
|
* Compression
|
||||||
*/
|
*/
|
||||||
extern int xmlGetDocCompressMode (xmlDocPtr doc);
|
int xmlGetDocCompressMode (xmlDocPtr doc);
|
||||||
extern void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
|
void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
|
||||||
extern int xmlGetCompressMode(void);
|
int xmlGetCompressMode(void);
|
||||||
extern void xmlSetCompressMode(int mode);
|
void xmlSetCompressMode(int mode);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,20 @@
|
|||||||
#define __XML_VALID_H__
|
#define __XML_VALID_H__
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ALl notation declarations are stored in a table
|
||||||
|
* there is one table per DTD
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XML_MIN_NOTATION_TABLE 32
|
||||||
|
|
||||||
|
typedef struct xmlNotationTable {
|
||||||
|
int nb_notations; /* number of notations stored */
|
||||||
|
int max_notations; /* maximum number of notations */
|
||||||
|
xmlNotationPtr table; /* the table of attributes */
|
||||||
|
} xmlNotationTable;
|
||||||
|
typedef xmlNotationTable *xmlNotationTablePtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ALl element declarations are stored in a table
|
* ALl element declarations are stored in a table
|
||||||
* there is one table per DTD
|
* there is one table per DTD
|
||||||
@ -21,16 +35,54 @@
|
|||||||
typedef struct xmlElementTable {
|
typedef struct xmlElementTable {
|
||||||
int nb_elements; /* number of elements stored */
|
int nb_elements; /* number of elements stored */
|
||||||
int max_elements; /* maximum number of elements */
|
int max_elements; /* maximum number of elements */
|
||||||
xmlElementPtr table; /* the table of entities */
|
xmlElementPtr table; /* the table of elements */
|
||||||
} xmlElementTable, *xmlElementTablePtr;
|
} xmlElementTable;
|
||||||
|
typedef xmlElementTable *xmlElementTablePtr;
|
||||||
|
|
||||||
extern xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, char *name, int type,
|
/*
|
||||||
|
* ALl attribute declarations are stored in a table
|
||||||
|
* there is one table per DTD
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XML_MIN_ATTRIBUTE_TABLE 32
|
||||||
|
|
||||||
|
typedef struct xmlAttributeTable {
|
||||||
|
int nb_attributes; /* number of attributes stored */
|
||||||
|
int max_attributes; /* maximum number of attributes */
|
||||||
|
xmlAttributePtr table; /* the table of attributes */
|
||||||
|
} xmlAttributeTable;
|
||||||
|
typedef xmlAttributeTable *xmlAttributeTablePtr;
|
||||||
|
|
||||||
|
/* Notation */
|
||||||
|
xmlNotationPtr xmlAddNotationDecl(xmlDtdPtr dtd, CHAR *name,
|
||||||
|
CHAR *PublicID, CHAR *SystemID);
|
||||||
|
xmlNotationTablePtr xmlCopyNotationTable(xmlNotationTablePtr table);
|
||||||
|
void xmlFreeNotationTable(xmlNotationTablePtr table);
|
||||||
|
void xmlDumpNotationTable(xmlNotationTablePtr table);
|
||||||
|
|
||||||
|
/* Element Content */
|
||||||
|
xmlElementContentPtr xmlNewElementContent(CHAR *name, int type);
|
||||||
|
xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
|
||||||
|
void xmlFreeElementContent(xmlElementContentPtr cur);
|
||||||
|
|
||||||
|
/* Element */
|
||||||
|
xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, CHAR *name, int type,
|
||||||
xmlElementContentPtr content);
|
xmlElementContentPtr content);
|
||||||
extern xmlElementContentPtr xmlNewElementContent(CHAR *name, int type);
|
xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
|
||||||
extern xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
|
void xmlFreeElementTable(xmlElementTablePtr table);
|
||||||
extern void xmlFreeElementContent(xmlElementContentPtr cur);
|
void xmlDumpElementTable(xmlElementTablePtr table);
|
||||||
|
|
||||||
|
/* Enumeration */
|
||||||
|
xmlEnumerationPtr xmlCreateEnumeration(CHAR *name);
|
||||||
|
void xmlFreeEnumeration(xmlEnumerationPtr cur);
|
||||||
|
xmlEnumerationPtr xmlCopyEnumeration(xmlEnumerationPtr cur);
|
||||||
|
|
||||||
|
/* Attribute */
|
||||||
|
xmlAttributePtr xmlAddAttributeDecl(xmlDtdPtr dtd, CHAR *elem,
|
||||||
|
CHAR *name, int type, int def,
|
||||||
|
CHAR *defaultValue, xmlEnumerationPtr tree);
|
||||||
|
xmlAttributeTablePtr xmlCopyAttributeTable(xmlAttributeTablePtr table);
|
||||||
|
void xmlFreeAttributeTable(xmlAttributeTablePtr table);
|
||||||
|
void xmlDumpAttributeTable(xmlAttributeTablePtr table);
|
||||||
|
|
||||||
extern xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
|
|
||||||
extern void xmlFreeElementTable(xmlElementTablePtr table);
|
|
||||||
extern void xmlDumpElementTable(xmlElementTablePtr table);
|
|
||||||
#endif /* __XML_VALID_H__ */
|
#endif /* __XML_VALID_H__ */
|
||||||
|
86
parser.h
86
parser.h
@ -26,24 +26,28 @@ typedef struct xmlParserInput {
|
|||||||
const CHAR *cur; /* Current char being parsed */
|
const CHAR *cur; /* Current char being parsed */
|
||||||
int line; /* Current line */
|
int line; /* Current line */
|
||||||
int col; /* Current column */
|
int col; /* Current column */
|
||||||
} xmlParserInput, *xmlParserInputPtr;
|
} xmlParserInput;
|
||||||
|
typedef xmlParserInput *xmlParserInputPtr;
|
||||||
|
|
||||||
typedef struct xmlParserNodeInfo {
|
typedef struct _xmlParserNodeInfo {
|
||||||
const struct xmlNode* node;
|
const struct xmlNode* node;
|
||||||
/* Position & line # that text that created the node begins & ends on */
|
/* Position & line # that text that created the node begins & ends on */
|
||||||
unsigned long begin_pos;
|
unsigned long begin_pos;
|
||||||
unsigned long begin_line;
|
unsigned long begin_line;
|
||||||
unsigned long end_pos;
|
unsigned long end_pos;
|
||||||
unsigned long end_line;
|
unsigned long end_line;
|
||||||
} xmlParserNodeInfo;
|
} _xmlParserNodeInfo;
|
||||||
|
typedef _xmlParserNodeInfo xmlParserNodeInfo;
|
||||||
|
|
||||||
typedef struct xmlParserNodeInfoSeq {
|
typedef struct xmlParserNodeInfoSeq {
|
||||||
unsigned long maximum;
|
unsigned long maximum;
|
||||||
unsigned long length;
|
unsigned long length;
|
||||||
xmlParserNodeInfo* buffer;
|
xmlParserNodeInfo* buffer;
|
||||||
} xmlParserNodeInfoSeq, *xmlParserNodeInfoSeqPtr;
|
} _xmlParserNodeInfoSeq;
|
||||||
|
typedef _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
|
||||||
|
typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
|
||||||
|
|
||||||
typedef struct xmlParserCtxt {
|
typedef struct _xmlParserCtxt {
|
||||||
struct xmlSAXHandler *sax; /* The SAX handler */
|
struct xmlSAXHandler *sax; /* The SAX handler */
|
||||||
xmlDocPtr doc; /* the document being built */
|
xmlDocPtr doc; /* the document being built */
|
||||||
int wellFormed; /* is the document well formed */
|
int wellFormed; /* is the document well formed */
|
||||||
@ -62,7 +66,9 @@ typedef struct xmlParserCtxt {
|
|||||||
|
|
||||||
int record_info; /* Whether node info should be kept */
|
int record_info; /* Whether node info should be kept */
|
||||||
xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
|
xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
|
||||||
} xmlParserCtxt, *xmlParserCtxtPtr;
|
} _xmlParserCtxt;
|
||||||
|
typedef _xmlParserCtxt xmlParserCtxt;
|
||||||
|
typedef xmlParserCtxt *xmlParserCtxtPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a SAX Locator.
|
* a SAX Locator.
|
||||||
@ -73,7 +79,9 @@ typedef struct xmlSAXLocator {
|
|||||||
const CHAR *(*getSystemId)(xmlParserCtxtPtr ctxt);
|
const CHAR *(*getSystemId)(xmlParserCtxtPtr ctxt);
|
||||||
int (*getLineNumber)(xmlParserCtxtPtr ctxt);
|
int (*getLineNumber)(xmlParserCtxtPtr ctxt);
|
||||||
int (*getColumnNumber)(xmlParserCtxtPtr ctxt);
|
int (*getColumnNumber)(xmlParserCtxtPtr ctxt);
|
||||||
} xmlSAXLocator, *xmlSAXLocatorPtr;
|
} _xmlSAXLocator;
|
||||||
|
typedef _xmlSAXLocator xmlSAXLocator;
|
||||||
|
typedef xmlSAXLocator *xmlSAXLocatorPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a SAX Exception.
|
* a SAX Exception.
|
||||||
@ -120,7 +128,8 @@ typedef struct xmlSAXHandler {
|
|||||||
warningSAXFunc warning;
|
warningSAXFunc warning;
|
||||||
errorSAXFunc error;
|
errorSAXFunc error;
|
||||||
fatalErrorSAXFunc fatalError;
|
fatalErrorSAXFunc fatalError;
|
||||||
} xmlSAXHandler, *xmlSAXHandlerPtr;
|
} xmlSAXHandler;
|
||||||
|
typedef xmlSAXHandler *xmlSAXHandlerPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global variables: just the SAX interface tables we are looking for full
|
* Global variables: just the SAX interface tables we are looking for full
|
||||||
@ -130,61 +139,58 @@ extern xmlSAXLocator xmlDefaultSAXLocator;
|
|||||||
extern xmlSAXHandler xmlDefaultSAXHandler;
|
extern xmlSAXHandler xmlDefaultSAXHandler;
|
||||||
|
|
||||||
#include "entities.h"
|
#include "entities.h"
|
||||||
|
#include "error.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CHAR handling
|
* CHAR handling
|
||||||
*/
|
*/
|
||||||
extern CHAR *xmlStrdup(const CHAR *input);
|
CHAR *xmlStrdup(const CHAR *cur);
|
||||||
extern CHAR *xmlStrndup(const CHAR *input, int n);
|
CHAR *xmlStrndup(const CHAR *cur, int len);
|
||||||
extern CHAR *xmlStrchr(const CHAR *str, CHAR val);
|
CHAR *xmlStrchr(const CHAR *str, CHAR val);
|
||||||
extern int xmlStrcmp(const CHAR *str1, const CHAR *str2);
|
int xmlStrcmp(const CHAR *str1, const CHAR *str2);
|
||||||
extern int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
|
int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
|
||||||
extern int xmlStrlen(const CHAR *str);
|
int xmlStrlen(const CHAR *str);
|
||||||
extern CHAR *xmlStrcat(CHAR *cur, const CHAR *add);
|
CHAR *xmlStrcat(CHAR *cur, const CHAR *add);
|
||||||
extern CHAR *xmlStrncat(CHAR *cur, const CHAR *add, int len);
|
CHAR *xmlStrncat(CHAR *cur, const CHAR *add, int len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interfaces
|
* Interfaces
|
||||||
*/
|
*/
|
||||||
extern xmlDocPtr xmlParseDoc(CHAR *cur);
|
xmlDocPtr xmlParseDoc(CHAR *cur);
|
||||||
extern xmlDocPtr xmlParseMemory(char *buffer, int size);
|
xmlDocPtr xmlParseMemory(char *buffer, int size);
|
||||||
extern xmlDocPtr xmlParseFile(const char *filename);
|
xmlDocPtr xmlParseFile(const char *filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Recovery mode
|
* Recovery mode
|
||||||
*/
|
*/
|
||||||
extern xmlDocPtr xmlRecoverDoc(CHAR *cur);
|
xmlDocPtr xmlRecoverDoc(CHAR *cur);
|
||||||
extern xmlDocPtr xmlRecoverMemory(char *buffer, int size);
|
xmlDocPtr xmlRecoverMemory(char *buffer, int size);
|
||||||
extern xmlDocPtr xmlRecoverFile(const char *filename);
|
xmlDocPtr xmlRecoverFile(const char *filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal routines
|
* Internal routines
|
||||||
*/
|
*/
|
||||||
extern int xmlParseDocument(xmlParserCtxtPtr ctxt);
|
int xmlParseDocument(xmlParserCtxtPtr ctxt);
|
||||||
extern xmlDocPtr xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery);
|
xmlDocPtr xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery);
|
||||||
extern xmlDocPtr xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer,
|
xmlDocPtr xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer,
|
||||||
int size, int recovery);
|
int size, int recovery);
|
||||||
extern xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
|
xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
|
||||||
int recovery);
|
int recovery);
|
||||||
extern void xmlInitParserCtxt(xmlParserCtxtPtr ctx);
|
void xmlInitParserCtxt(xmlParserCtxtPtr ctxt);
|
||||||
extern void xmlClearParserCtxt(xmlParserCtxtPtr ctx);
|
void xmlClearParserCtxt(xmlParserCtxtPtr ctxt);
|
||||||
extern void xmlSetupParserForBuffer(xmlParserCtxtPtr ctx, const CHAR* buffer,
|
void xmlSetupParserForBuffer(xmlParserCtxtPtr ctxt, const CHAR* buffer,
|
||||||
const char* filename);
|
const char* filename);
|
||||||
|
|
||||||
extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
|
const xmlParserNodeInfo* xmlParserFindNodeInfo(const xmlParserCtxt* ctxt,
|
||||||
|
const xmlNode* node);
|
||||||
extern const xmlParserNodeInfo* xmlParserFindNodeInfo(const xmlParserCtxt* c,
|
void xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
||||||
const xmlNode* node);
|
void xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
||||||
extern void xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
|
||||||
extern void xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
|
|
||||||
unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeq* seq,
|
unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeq* seq,
|
||||||
const xmlNode* node);
|
const xmlNode* node);
|
||||||
extern void xmlParserAddNodeInfo(xmlParserCtxtPtr ctx,
|
void xmlParserAddNodeInfo(xmlParserCtxtPtr ctxt,
|
||||||
const xmlParserNodeInfo* info);
|
const xmlParserNodeInfo* info);
|
||||||
|
|
||||||
extern void xmlParserWarning(xmlParserCtxtPtr ctxt, const char *msg, ...);
|
void xmlDefaultSAXHandlerInit(void);
|
||||||
extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
|
|
||||||
extern void xmlDefaultSAXHandlerInit(void);
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
128
parserInternals.h
Normal file
128
parserInternals.h
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/*
|
||||||
|
* parserInternals.h : internals routines exported by the parser.
|
||||||
|
*
|
||||||
|
* See Copyright for the status of this software.
|
||||||
|
*
|
||||||
|
* Daniel.Veillard@w3.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __XML_PARSER_INTERNALS_H__
|
||||||
|
#define __XML_PARSER_INTERNALS_H__
|
||||||
|
|
||||||
|
#include "parser.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Entities
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlHandleEntity(xmlParserCtxtPtr ctxt, xmlEntityPtr entity);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Namespaces.
|
||||||
|
*/
|
||||||
|
CHAR *
|
||||||
|
xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlNamespaceParseQName(xmlParserCtxtPtr ctxt, CHAR **prefix);
|
||||||
|
CHAR *
|
||||||
|
xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseQuotedString(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseNamespace(xmlParserCtxtPtr ctxt);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generic production rules
|
||||||
|
*/
|
||||||
|
CHAR *
|
||||||
|
xmlParseName(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseNmtoken(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEntityValue(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseAttValue(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseSystemLiteral(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParsePubidLiteral(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseCharData(xmlParserCtxtPtr ctxt, int cdata);
|
||||||
|
CHAR *
|
||||||
|
xmlParseExternalID(xmlParserCtxtPtr ctxt, CHAR **publicID, int strict);
|
||||||
|
xmlNodePtr
|
||||||
|
xmlParseComment(xmlParserCtxtPtr ctxt, int create);
|
||||||
|
CHAR *
|
||||||
|
xmlParsePITarget(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParsePI(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseNotationDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseEntityDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseDefaultDecl(xmlParserCtxtPtr ctxt, CHAR **value);
|
||||||
|
xmlEnumerationPtr
|
||||||
|
xmlParseNotationType(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlEnumerationPtr
|
||||||
|
xmlParseEnumerationType(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseEnumeratedType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);
|
||||||
|
int
|
||||||
|
xmlParseAttributeType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);
|
||||||
|
void
|
||||||
|
xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlElementContentPtr
|
||||||
|
xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlElementContentPtr
|
||||||
|
xmlParseElementChildrenContentDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, CHAR *name,
|
||||||
|
xmlElementContentPtr *result);
|
||||||
|
int
|
||||||
|
xmlParseElementDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseMarkupDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseCharRef(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEntityRef(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseReference(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParsePEReference(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlAttrPtr
|
||||||
|
xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlNodePtr node);
|
||||||
|
xmlNodePtr
|
||||||
|
xmlParseStartTag(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseEndTag(xmlParserCtxtPtr ctxt, xmlNsPtr *nsPtr, CHAR **tagPtr);
|
||||||
|
void
|
||||||
|
xmlParseCDSect(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseContent(xmlParserCtxtPtr ctxt);
|
||||||
|
xmlNodePtr
|
||||||
|
xmlParseElement(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseVersionNum(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseVersionInfo(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEncName(xmlParserCtxtPtr ctxt);
|
||||||
|
CHAR *
|
||||||
|
xmlParseEncodingDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
int
|
||||||
|
xmlParseSDDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseXMLDecl(xmlParserCtxtPtr ctxt);
|
||||||
|
void
|
||||||
|
xmlParseMisc(xmlParserCtxtPtr ctxt);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __XML_PARSER_INTERNALS_H__ */
|
109
tree.c
109
tree.c
@ -35,7 +35,7 @@ static int xmlCompressMode = 0;
|
|||||||
} else { \
|
} else { \
|
||||||
while (ulccur->next != NULL) ulccur = ulccur->next; \
|
while (ulccur->next != NULL) ulccur = ulccur->next; \
|
||||||
(n)->last = ulccur; \
|
(n)->last = ulccur; \
|
||||||
} }
|
}}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* *
|
* *
|
||||||
@ -77,7 +77,7 @@ xmlUpgradeOldNs(xmlDocPtr doc) {
|
|||||||
* @prefix: the prefix for the namespace
|
* @prefix: the prefix for the namespace
|
||||||
*
|
*
|
||||||
* Creation of a new Namespace.
|
* Creation of a new Namespace.
|
||||||
* return values: returns a new namespace pointer
|
* Returns returns a new namespace pointer
|
||||||
*/
|
*/
|
||||||
xmlNsPtr
|
xmlNsPtr
|
||||||
xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *prefix) {
|
xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *prefix) {
|
||||||
@ -132,7 +132,7 @@ xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *prefix) {
|
|||||||
* @prefix: the prefix for the namespace
|
* @prefix: the prefix for the namespace
|
||||||
*
|
*
|
||||||
* Creation of a Namespace, the old way using PI and without scoping, to AVOID.
|
* Creation of a Namespace, the old way using PI and without scoping, to AVOID.
|
||||||
* return values: returns a new namespace pointer
|
* Returns returns a new namespace pointer
|
||||||
*/
|
*/
|
||||||
xmlNsPtr
|
xmlNsPtr
|
||||||
xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *prefix) {
|
xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *prefix) {
|
||||||
@ -237,7 +237,7 @@ xmlFreeNsList(xmlNsPtr cur) {
|
|||||||
* @SystemID: the system ID
|
* @SystemID: the system ID
|
||||||
*
|
*
|
||||||
* Creation of a new DTD.
|
* Creation of a new DTD.
|
||||||
* return values: a pointer to the new DTD structure
|
* Returns a pointer to the new DTD structure
|
||||||
*/
|
*/
|
||||||
xmlDtdPtr
|
xmlDtdPtr
|
||||||
xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
||||||
@ -271,7 +271,9 @@ xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
|||||||
cur->SystemID = xmlStrdup(SystemID);
|
cur->SystemID = xmlStrdup(SystemID);
|
||||||
else
|
else
|
||||||
cur->SystemID = NULL;
|
cur->SystemID = NULL;
|
||||||
|
cur->notations = NULL;
|
||||||
cur->elements = NULL;
|
cur->elements = NULL;
|
||||||
|
cur->attributes = NULL;
|
||||||
cur->entities = NULL;
|
cur->entities = NULL;
|
||||||
if (doc != NULL)
|
if (doc != NULL)
|
||||||
doc->extSubset = cur;
|
doc->extSubset = cur;
|
||||||
@ -286,8 +288,8 @@ xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
|||||||
* @ExternalID: the external ID
|
* @ExternalID: the external ID
|
||||||
* @SystemID: the system ID
|
* @SystemID: the system ID
|
||||||
*
|
*
|
||||||
* Creatte the internal subset of a document
|
* Create the internal subset of a document
|
||||||
* return values: a pointer to the new DTD structure
|
* Returns a pointer to the new DTD structure
|
||||||
*/
|
*/
|
||||||
xmlDtdPtr
|
xmlDtdPtr
|
||||||
xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
|
xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
|
||||||
@ -322,7 +324,9 @@ xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
|
|||||||
cur->SystemID = xmlStrdup(SystemID);
|
cur->SystemID = xmlStrdup(SystemID);
|
||||||
else
|
else
|
||||||
cur->SystemID = NULL;
|
cur->SystemID = NULL;
|
||||||
|
cur->notations = NULL;
|
||||||
cur->elements = NULL;
|
cur->elements = NULL;
|
||||||
|
cur->attributes = NULL;
|
||||||
cur->entities = NULL;
|
cur->entities = NULL;
|
||||||
if (doc != NULL)
|
if (doc != NULL)
|
||||||
doc->intSubset = cur;
|
doc->intSubset = cur;
|
||||||
@ -345,8 +349,12 @@ xmlFreeDtd(xmlDtdPtr cur) {
|
|||||||
if (cur->name != NULL) free((char *) cur->name);
|
if (cur->name != NULL) free((char *) cur->name);
|
||||||
if (cur->SystemID != NULL) free((char *) cur->SystemID);
|
if (cur->SystemID != NULL) free((char *) cur->SystemID);
|
||||||
if (cur->ExternalID != NULL) free((char *) cur->ExternalID);
|
if (cur->ExternalID != NULL) free((char *) cur->ExternalID);
|
||||||
|
if (cur->notations != NULL)
|
||||||
|
xmlFreeNotationTable((xmlNotationTablePtr) cur->notations);
|
||||||
if (cur->elements != NULL)
|
if (cur->elements != NULL)
|
||||||
xmlFreeElementTable((xmlElementTablePtr) cur->elements);
|
xmlFreeElementTable((xmlElementTablePtr) cur->elements);
|
||||||
|
if (cur->attributes != NULL)
|
||||||
|
xmlFreeAttributeTable((xmlAttributeTablePtr) cur->attributes);
|
||||||
if (cur->entities != NULL)
|
if (cur->entities != NULL)
|
||||||
xmlFreeEntitiesTable((xmlEntitiesTablePtr) cur->entities);
|
xmlFreeEntitiesTable((xmlEntitiesTablePtr) cur->entities);
|
||||||
memset(cur, -1, sizeof(xmlDtd));
|
memset(cur, -1, sizeof(xmlDtd));
|
||||||
@ -357,7 +365,7 @@ xmlFreeDtd(xmlDtdPtr cur) {
|
|||||||
* xmlNewDoc:
|
* xmlNewDoc:
|
||||||
* @version: CHAR string giving the version of XML "1.0"
|
* @version: CHAR string giving the version of XML "1.0"
|
||||||
*
|
*
|
||||||
* Create a new document
|
* Returns a new document
|
||||||
*/
|
*/
|
||||||
xmlDocPtr
|
xmlDocPtr
|
||||||
xmlNewDoc(const CHAR *version) {
|
xmlNewDoc(const CHAR *version) {
|
||||||
@ -424,11 +432,11 @@ xmlFreeDoc(xmlDocPtr cur) {
|
|||||||
* xmlStringLenGetNodeList:
|
* xmlStringLenGetNodeList:
|
||||||
* @doc: the document
|
* @doc: the document
|
||||||
* @value: the value of the text
|
* @value: the value of the text
|
||||||
* @int len: the length of the string value
|
* @len: the length of the string value
|
||||||
*
|
*
|
||||||
* Parse the value string and build the node list associated. Should
|
* Parse the value string and build the node list associated. Should
|
||||||
* produce a flat tree with only TEXTs and ENTITY_REFs.
|
* produce a flat tree with only TEXTs and ENTITY_REFs.
|
||||||
* return values: a pointer to the first child
|
* Returns a pointer to the first child
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value, int len) {
|
xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value, int len) {
|
||||||
@ -539,7 +547,7 @@ xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value, int len) {
|
|||||||
*
|
*
|
||||||
* Parse the value string and build the node list associated. Should
|
* Parse the value string and build the node list associated. Should
|
||||||
* produce a flat tree with only TEXTs and ENTITY_REFs.
|
* produce a flat tree with only TEXTs and ENTITY_REFs.
|
||||||
* return values: a pointer to the first child
|
* Returns a pointer to the first child
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value) {
|
xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value) {
|
||||||
@ -651,7 +659,7 @@ xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value) {
|
|||||||
*
|
*
|
||||||
* Returns the string equivalent to the text contained in the Node list
|
* Returns the string equivalent to the text contained in the Node list
|
||||||
* made of TEXTs and ENTITY_REFs
|
* made of TEXTs and ENTITY_REFs
|
||||||
* return values: a pointer to the string copy, the calller must free it.
|
* Returns a pointer to the string copy, the calller must free it.
|
||||||
*/
|
*/
|
||||||
CHAR *
|
CHAR *
|
||||||
xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine) {
|
xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine) {
|
||||||
@ -701,7 +709,7 @@ xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine) {
|
|||||||
* @value: the value of the attribute
|
* @value: the value of the attribute
|
||||||
*
|
*
|
||||||
* Create a new property carried by a node.
|
* Create a new property carried by a node.
|
||||||
* return values: a pointer to the attribute
|
* Returns a pointer to the attribute
|
||||||
*/
|
*/
|
||||||
xmlAttrPtr
|
xmlAttrPtr
|
||||||
xmlNewProp(xmlNodePtr node, const CHAR *name, const CHAR *value) {
|
xmlNewProp(xmlNodePtr node, const CHAR *name, const CHAR *value) {
|
||||||
@ -757,7 +765,7 @@ xmlNewProp(xmlNodePtr node, const CHAR *name, const CHAR *value) {
|
|||||||
* @value: the value of the attribute
|
* @value: the value of the attribute
|
||||||
*
|
*
|
||||||
* Create a new property carried by a document.
|
* Create a new property carried by a document.
|
||||||
* return values: a pointer to the attribute
|
* Returns a pointer to the attribute
|
||||||
*/
|
*/
|
||||||
xmlAttrPtr
|
xmlAttrPtr
|
||||||
xmlNewDocProp(xmlDocPtr doc, const CHAR *name, const CHAR *value) {
|
xmlNewDocProp(xmlDocPtr doc, const CHAR *name, const CHAR *value) {
|
||||||
@ -835,12 +843,11 @@ xmlFreeProp(xmlAttrPtr cur) {
|
|||||||
* xmlNewNode:
|
* xmlNewNode:
|
||||||
* @ns: namespace if any
|
* @ns: namespace if any
|
||||||
* @name: the node name
|
* @name: the node name
|
||||||
* @content: the text content if any
|
|
||||||
*
|
*
|
||||||
* Creation of a new node element. @ns and @content are optionnal (NULL).
|
* Creation of a new node element. @ns and @content are optionnal (NULL).
|
||||||
* If content is non NULL, a child list containing the TEXTs and
|
* If content is non NULL, a child list containing the TEXTs and
|
||||||
* ENTITY_REFs node will be created.
|
* ENTITY_REFs node will be created.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewNode(xmlNsPtr ns, const CHAR *name) {
|
xmlNewNode(xmlNsPtr ns, const CHAR *name) {
|
||||||
@ -888,7 +895,7 @@ xmlNewNode(xmlNsPtr ns, const CHAR *name) {
|
|||||||
*
|
*
|
||||||
* Creation of a new node element within a document. @ns and @content
|
* Creation of a new node element within a document. @ns and @content
|
||||||
* are optionnal (NULL).
|
* are optionnal (NULL).
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
||||||
@ -900,7 +907,7 @@ xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
|||||||
cur->doc = doc;
|
cur->doc = doc;
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
cur->childs = xmlStringGetNodeList(doc, content);
|
cur->childs = xmlStringGetNodeList(doc, content);
|
||||||
UPDATE_LAST_CHILD(cur);
|
UPDATE_LAST_CHILD(cur)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(cur);
|
return(cur);
|
||||||
@ -912,7 +919,7 @@ xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
|||||||
* @content: the text content
|
* @content: the text content
|
||||||
*
|
*
|
||||||
* Creation of a new text node.
|
* Creation of a new text node.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewText(const CHAR *content) {
|
xmlNewText(const CHAR *content) {
|
||||||
@ -952,7 +959,7 @@ xmlNewText(const CHAR *content) {
|
|||||||
* @name: the reference name, or the reference string with & and ;
|
* @name: the reference name, or the reference string with & and ;
|
||||||
*
|
*
|
||||||
* Creation of a new reference node.
|
* Creation of a new reference node.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewReference(xmlDocPtr doc, const CHAR *name) {
|
xmlNewReference(xmlDocPtr doc, const CHAR *name) {
|
||||||
@ -1003,7 +1010,7 @@ xmlNewReference(xmlDocPtr doc, const CHAR *name) {
|
|||||||
* @content: the text content
|
* @content: the text content
|
||||||
*
|
*
|
||||||
* Creation of a new text node within a document.
|
* Creation of a new text node within a document.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewDocText(xmlDocPtr doc, const CHAR *content) {
|
xmlNewDocText(xmlDocPtr doc, const CHAR *content) {
|
||||||
@ -1020,7 +1027,7 @@ xmlNewDocText(xmlDocPtr doc, const CHAR *content) {
|
|||||||
* @len: the text len.
|
* @len: the text len.
|
||||||
*
|
*
|
||||||
* Creation of a new text node with an extra parameter for the content's lenght
|
* Creation of a new text node with an extra parameter for the content's lenght
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewTextLen(const CHAR *content, int len) {
|
xmlNewTextLen(const CHAR *content, int len) {
|
||||||
@ -1062,7 +1069,7 @@ xmlNewTextLen(const CHAR *content, int len) {
|
|||||||
*
|
*
|
||||||
* Creation of a new text node with an extra content lenght parameter. The
|
* Creation of a new text node with an extra content lenght parameter. The
|
||||||
* text node pertain to a given document.
|
* text node pertain to a given document.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len) {
|
xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len) {
|
||||||
@ -1078,7 +1085,7 @@ xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len) {
|
|||||||
* @content: the comment content
|
* @content: the comment content
|
||||||
*
|
*
|
||||||
* Creation of a new node containing a comment.
|
* Creation of a new node containing a comment.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewComment(CHAR *content) {
|
xmlNewComment(CHAR *content) {
|
||||||
@ -1113,12 +1120,12 @@ xmlNewComment(CHAR *content) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xmlNewComment:
|
* xmlNewDocComment:
|
||||||
* @doc: the document
|
* @doc: the document
|
||||||
* @content: the comment content
|
* @content: the comment content
|
||||||
*
|
*
|
||||||
* Creation of a new node containing a commentwithin a document.
|
* Creation of a new node containing a commentwithin a document.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewDocComment(xmlDocPtr doc, CHAR *content) {
|
xmlNewDocComment(xmlDocPtr doc, CHAR *content) {
|
||||||
@ -1140,7 +1147,7 @@ xmlNewDocComment(xmlDocPtr doc, CHAR *content) {
|
|||||||
* Creation of a new child element, added at the end of @parent childs list.
|
* Creation of a new child element, added at the end of @parent childs list.
|
||||||
* @ns and @content parameters are optionnal (NULL). If content is non NULL,
|
* @ns and @content parameters are optionnal (NULL). If content is non NULL,
|
||||||
* a child list containing the TEXTs and ENTITY_REFs node will be created.
|
* a child list containing the TEXTs and ENTITY_REFs node will be created.
|
||||||
* return values: a pointer to the new node object.
|
* Returns a pointer to the new node object.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
|
xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
|
||||||
@ -1191,7 +1198,7 @@ xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
|
|||||||
* @cur: the child node
|
* @cur: the child node
|
||||||
*
|
*
|
||||||
* Add a new child element, to @parent, at the end of the child list.
|
* Add a new child element, to @parent, at the end of the child list.
|
||||||
* return values: the child or NULL in case of error.
|
* Returns the child or NULL in case of error.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
|
xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
|
||||||
@ -1231,7 +1238,7 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
|
|||||||
if (text->next != NULL)
|
if (text->next != NULL)
|
||||||
text->next->prev = text;
|
text->next->prev = text;
|
||||||
parent->childs = text;
|
parent->childs = text;
|
||||||
UPDATE_LAST_CHILD(parent);
|
UPDATE_LAST_CHILD(parent)
|
||||||
free(parent->content);
|
free(parent->content);
|
||||||
parent->content = NULL;
|
parent->content = NULL;
|
||||||
}
|
}
|
||||||
@ -1254,7 +1261,7 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
|
|||||||
* @parent: the parent node
|
* @parent: the parent node
|
||||||
*
|
*
|
||||||
* Search the last child of a node.
|
* Search the last child of a node.
|
||||||
* return values: the last child or NULL if none.
|
* Returns the last child or NULL if none.
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlGetLastChild(xmlNodePtr parent) {
|
xmlGetLastChild(xmlNodePtr parent) {
|
||||||
@ -1534,7 +1541,7 @@ xmlStaticCopyNode(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent,
|
|||||||
}
|
}
|
||||||
if (node->childs != NULL)
|
if (node->childs != NULL)
|
||||||
ret->childs = xmlStaticCopyNodeList(node->childs, doc, ret);
|
ret->childs = xmlStaticCopyNodeList(node->childs, doc, ret);
|
||||||
UPDATE_LAST_CHILD(ret);
|
UPDATE_LAST_CHILD(ret)
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1636,6 +1643,15 @@ xmlCopyDtd(xmlDtdPtr dtd) {
|
|||||||
if (dtd->entities != NULL)
|
if (dtd->entities != NULL)
|
||||||
ret->entities = (void *) xmlCopyEntitiesTable(
|
ret->entities = (void *) xmlCopyEntitiesTable(
|
||||||
(xmlEntitiesTablePtr) dtd->entities);
|
(xmlEntitiesTablePtr) dtd->entities);
|
||||||
|
if (dtd->notations != NULL)
|
||||||
|
ret->notations = (void *) xmlCopyNotationTable(
|
||||||
|
(xmlNotationTablePtr) dtd->notations);
|
||||||
|
if (dtd->elements != NULL)
|
||||||
|
ret->elements = (void *) xmlCopyElementTable(
|
||||||
|
(xmlElementTablePtr) dtd->elements);
|
||||||
|
if (dtd->attributes != NULL)
|
||||||
|
ret->attributes = (void *) xmlCopyAttributeTable(
|
||||||
|
(xmlAttributeTablePtr) dtd->attributes);
|
||||||
/*
|
/*
|
||||||
* TODO: support for Element definitions.
|
* TODO: support for Element definitions.
|
||||||
*/
|
*/
|
||||||
@ -1690,7 +1706,7 @@ xmlCopyDoc(xmlDocPtr doc, int recursive) {
|
|||||||
* directly by this node if it's a TEXT node or the aggregate string
|
* directly by this node if it's a TEXT node or the aggregate string
|
||||||
* of the values carried by this node child's (TEXT and ENTITY_REF).
|
* of the values carried by this node child's (TEXT and ENTITY_REF).
|
||||||
* Entity references are substitued.
|
* Entity references are substitued.
|
||||||
* Return value: a new CHAR * or NULL if no content is available.
|
* Returns a new CHAR * or NULL if no content is available.
|
||||||
*/
|
*/
|
||||||
CHAR *
|
CHAR *
|
||||||
xmlNodeGetContent(xmlNodePtr cur) {
|
xmlNodeGetContent(xmlNodePtr cur) {
|
||||||
@ -1740,7 +1756,7 @@ xmlNodeSetContent(xmlNodePtr cur, const CHAR *content) {
|
|||||||
}
|
}
|
||||||
if (cur->childs != NULL) xmlFreeNode(cur->childs);
|
if (cur->childs != NULL) xmlFreeNode(cur->childs);
|
||||||
cur->childs = xmlStringGetNodeList(cur->doc, content);
|
cur->childs = xmlStringGetNodeList(cur->doc, content);
|
||||||
UPDATE_LAST_CHILD(cur);
|
UPDATE_LAST_CHILD(cur)
|
||||||
break;
|
break;
|
||||||
case XML_ATTRIBUTE_NODE:
|
case XML_ATTRIBUTE_NODE:
|
||||||
break;
|
break;
|
||||||
@ -1788,7 +1804,7 @@ xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len) {
|
|||||||
}
|
}
|
||||||
if (cur->childs != NULL) xmlFreeNode(cur->childs);
|
if (cur->childs != NULL) xmlFreeNode(cur->childs);
|
||||||
cur->childs = xmlStringLenGetNodeList(cur->doc, content, len);
|
cur->childs = xmlStringLenGetNodeList(cur->doc, content, len);
|
||||||
UPDATE_LAST_CHILD(cur);
|
UPDATE_LAST_CHILD(cur)
|
||||||
break;
|
break;
|
||||||
case XML_ATTRIBUTE_NODE:
|
case XML_ATTRIBUTE_NODE:
|
||||||
break;
|
break;
|
||||||
@ -1845,7 +1861,7 @@ xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len) {
|
|||||||
} else {
|
} else {
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
cur->childs = xmlStringGetNodeList(cur->doc, cur->content);
|
cur->childs = xmlStringGetNodeList(cur->doc, cur->content);
|
||||||
UPDATE_LAST_CHILD(cur);
|
UPDATE_LAST_CHILD(cur)
|
||||||
free(cur->content);
|
free(cur->content);
|
||||||
cur->content = NULL;
|
cur->content = NULL;
|
||||||
last = cur->last;
|
last = cur->last;
|
||||||
@ -1906,7 +1922,7 @@ xmlNodeAddContent(xmlNodePtr cur, const CHAR *content) {
|
|||||||
* @second: the second text node being merged
|
* @second: the second text node being merged
|
||||||
*
|
*
|
||||||
* Merge two text nodes into one
|
* Merge two text nodes into one
|
||||||
* Return values: the first text node augmented
|
* Returns the first text node augmented
|
||||||
*/
|
*/
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
xmlTextMerge(xmlNodePtr first, xmlNodePtr second) {
|
xmlTextMerge(xmlNodePtr first, xmlNodePtr second) {
|
||||||
@ -1930,7 +1946,7 @@ xmlTextMerge(xmlNodePtr first, xmlNodePtr second) {
|
|||||||
* recurse on the parents until it finds the defined namespace
|
* recurse on the parents until it finds the defined namespace
|
||||||
* or return NULL otherwise.
|
* or return NULL otherwise.
|
||||||
* @nameSpace can be NULL, this is a search for the default namespace.
|
* @nameSpace can be NULL, this is a search for the default namespace.
|
||||||
* return values: the namespace pointer or NULL.
|
* Returns the namespace pointer or NULL.
|
||||||
*/
|
*/
|
||||||
xmlNsPtr
|
xmlNsPtr
|
||||||
xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const CHAR *nameSpace) {
|
xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const CHAR *nameSpace) {
|
||||||
@ -1968,7 +1984,7 @@ xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const CHAR *nameSpace) {
|
|||||||
*
|
*
|
||||||
* Search a Ns aliasing a given URI. Recurse on the parents until it finds
|
* Search a Ns aliasing a given URI. Recurse on the parents until it finds
|
||||||
* the defined namespace or return NULL otherwise.
|
* the defined namespace or return NULL otherwise.
|
||||||
* return values: the namespace pointer or NULL.
|
* Returns the namespace pointer or NULL.
|
||||||
*/
|
*/
|
||||||
xmlNsPtr
|
xmlNsPtr
|
||||||
xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const CHAR *href) {
|
xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const CHAR *href) {
|
||||||
@ -2003,7 +2019,7 @@ xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const CHAR *href) {
|
|||||||
*
|
*
|
||||||
* Search and get the value of an attribute associated to a node
|
* Search and get the value of an attribute associated to a node
|
||||||
* This does the entity substitution.
|
* This does the entity substitution.
|
||||||
* return values: the attribute value or NULL if not found.
|
* Returns the attribute value or NULL if not found.
|
||||||
*/
|
*/
|
||||||
CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name) {
|
CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name) {
|
||||||
xmlAttrPtr prop = node->properties;
|
xmlAttrPtr prop = node->properties;
|
||||||
@ -2028,7 +2044,7 @@ CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name) {
|
|||||||
* @value: the attribute value
|
* @value: the attribute value
|
||||||
*
|
*
|
||||||
* Set (or reset) an attribute carried by a node.
|
* Set (or reset) an attribute carried by a node.
|
||||||
* return values: the attribute pointer.
|
* Returns the attribute pointer.
|
||||||
*/
|
*/
|
||||||
xmlAttrPtr
|
xmlAttrPtr
|
||||||
xmlSetProp(xmlNodePtr node, const CHAR *name, const CHAR *value) {
|
xmlSetProp(xmlNodePtr node, const CHAR *name, const CHAR *value) {
|
||||||
@ -2054,7 +2070,7 @@ xmlSetProp(xmlNodePtr node, const CHAR *name, const CHAR *value) {
|
|||||||
* @node: the node
|
* @node: the node
|
||||||
*
|
*
|
||||||
* Is this node a Text node ?
|
* Is this node a Text node ?
|
||||||
* return values: 1 yes, 0 no
|
* Returns 1 yes, 0 no
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
xmlNodeIsText(xmlNodePtr node) {
|
xmlNodeIsText(xmlNodePtr node) {
|
||||||
@ -2065,7 +2081,7 @@ xmlNodeIsText(xmlNodePtr node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xmlNodeIsText:
|
* xmlTextConcat:
|
||||||
* @node: the node
|
* @node: the node
|
||||||
* @content: the content
|
* @content: the content
|
||||||
* @len: @content lenght
|
* @len: @content lenght
|
||||||
@ -2274,15 +2290,20 @@ xmlDtdDump(xmlDocPtr doc) {
|
|||||||
xmlBufferWriteCHAR(cur->SystemID);
|
xmlBufferWriteCHAR(cur->SystemID);
|
||||||
xmlBufferWriteChar("\"");
|
xmlBufferWriteChar("\"");
|
||||||
}
|
}
|
||||||
if ((cur->entities == NULL) && (cur->elements == NULL)) {
|
if ((cur->entities == NULL) && (cur->elements == NULL) &&
|
||||||
|
(cur->attributes == NULL) && (cur->notations == NULL)) {
|
||||||
xmlBufferWriteChar(">\n");
|
xmlBufferWriteChar(">\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
xmlBufferWriteChar(" [\n");
|
xmlBufferWriteChar(" [\n");
|
||||||
if (cur->entities != NULL)
|
if (cur->entities != NULL)
|
||||||
xmlDumpEntitiesTable((xmlEntitiesTablePtr) cur->entities);
|
xmlDumpEntitiesTable((xmlEntitiesTablePtr) cur->entities);
|
||||||
|
if (cur->notations != NULL)
|
||||||
|
xmlDumpNotationTable((xmlNotationTablePtr) cur->notations);
|
||||||
if (cur->elements != NULL)
|
if (cur->elements != NULL)
|
||||||
xmlDumpElementTable((xmlElementTablePtr) cur->elements);
|
xmlDumpElementTable((xmlElementTablePtr) cur->elements);
|
||||||
|
if (cur->attributes != NULL)
|
||||||
|
xmlDumpAttributeTable((xmlAttributeTablePtr) cur->attributes);
|
||||||
xmlBufferWriteChar("]");
|
xmlBufferWriteChar("]");
|
||||||
|
|
||||||
/* TODO !!! a lot more things to dump ... */
|
/* TODO !!! a lot more things to dump ... */
|
||||||
@ -2513,7 +2534,7 @@ xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size) {
|
|||||||
* @doc: the document
|
* @doc: the document
|
||||||
*
|
*
|
||||||
* get the compression ratio for a document, ZLIB based
|
* get the compression ratio for a document, ZLIB based
|
||||||
* return values: 0 (uncompressed) to 9 (max compression)
|
* Returns 0 (uncompressed) to 9 (max compression)
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
xmlGetDocCompressMode (xmlDocPtr doc) {
|
xmlGetDocCompressMode (xmlDocPtr doc) {
|
||||||
@ -2541,7 +2562,7 @@ xmlSetDocCompressMode (xmlDocPtr doc, int mode) {
|
|||||||
* xmlGetCompressMode:
|
* xmlGetCompressMode:
|
||||||
*
|
*
|
||||||
* get the default compression mode used, ZLIB based.
|
* get the default compression mode used, ZLIB based.
|
||||||
* return values: 0 (uncompressed) to 9 (max compression)
|
* Returns 0 (uncompressed) to 9 (max compression)
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
xmlGetCompressMode(void) {
|
xmlGetCompressMode(void) {
|
||||||
|
207
tree.h
207
tree.h
@ -55,41 +55,67 @@ typedef unsigned char CHAR;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* a DTD Notation definition
|
* a DTD Notation definition
|
||||||
* TODO !!!!
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
typedef struct xmlNotation {
|
||||||
|
const CHAR *name; /* Notation name */
|
||||||
|
const CHAR *PublicID; /* Public identifier, if any */
|
||||||
|
const CHAR *SystemID; /* System identifier, if any */
|
||||||
|
} xmlNotation;
|
||||||
|
typedef xmlNotation *xmlNotationPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a DTD Attribute definition
|
* a DTD Attribute definition
|
||||||
* TODO !!!!
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define XML_ATTRIBUTE_NONE 1
|
typedef enum {
|
||||||
#define XML_ATTRIBUTE_REQUIRED 2
|
XML_ATTRIBUTE_CDATA = 1,
|
||||||
#define XML_ATTRIBUTE_IMPLIED 3
|
XML_ATTRIBUTE_ID,
|
||||||
#define XML_ATTRIBUTE_FIXED 4
|
XML_ATTRIBUTE_IDREF ,
|
||||||
|
XML_ATTRIBUTE_IDREFS,
|
||||||
|
XML_ATTRIBUTE_ENTITY,
|
||||||
|
XML_ATTRIBUTE_ENTITIES,
|
||||||
|
XML_ATTRIBUTE_NMTOKEN,
|
||||||
|
XML_ATTRIBUTE_NMTOKENS,
|
||||||
|
XML_ATTRIBUTE_ENUMERATION,
|
||||||
|
XML_ATTRIBUTE_NOTATION
|
||||||
|
} xmlAttributeType;
|
||||||
|
|
||||||
#define XML_ATTRIBUTE_STRING 1
|
typedef enum {
|
||||||
#define XML_ATTRIBUTE_ID 2
|
XML_ATTRIBUTE_NONE = 1,
|
||||||
#define XML_ATTRIBUTE_IDREF 3
|
XML_ATTRIBUTE_REQUIRED,
|
||||||
#define XML_ATTRIBUTE_IDREFS 4
|
XML_ATTRIBUTE_IMPLIED,
|
||||||
#define XML_ATTRIBUTE_ENTITY 5
|
XML_ATTRIBUTE_FIXED
|
||||||
#define XML_ATTRIBUTE_ENTITIES 6
|
} xmlAttributeDefault;
|
||||||
#define XML_ATTRIBUTE_NMTOKEN 7
|
|
||||||
#define XML_ATTRIBUTE_NMTOKENS 8
|
typedef struct xmlEnumeration {
|
||||||
#define XML_ATTRIBUTE_ENUMERATED 9
|
struct xmlEnumeration *next; /* next one */
|
||||||
|
const CHAR *name; /* Enumeration name */
|
||||||
|
} xmlEnumeration;
|
||||||
|
typedef xmlEnumeration *xmlEnumerationPtr;
|
||||||
|
|
||||||
|
typedef struct xmlAttribute {
|
||||||
|
const CHAR *elem; /* Element holding the attribute */
|
||||||
|
const CHAR *name; /* Attribute name */
|
||||||
|
xmlAttributeType type; /* The type */
|
||||||
|
xmlAttributeDefault def; /* the default */
|
||||||
|
const CHAR *defaultValue;/* or the default value */
|
||||||
|
xmlEnumerationPtr tree; /* or the enumeration tree if any */
|
||||||
|
} xmlAttribute;
|
||||||
|
typedef xmlAttribute *xmlAttributePtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a DTD Element definition.
|
* a DTD Element definition.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_ELEMENT_CONTENT_PCDATA=1,
|
XML_ELEMENT_CONTENT_PCDATA = 1,
|
||||||
XML_ELEMENT_CONTENT_ELEMENT,
|
XML_ELEMENT_CONTENT_ELEMENT,
|
||||||
XML_ELEMENT_CONTENT_SEQ,
|
XML_ELEMENT_CONTENT_SEQ,
|
||||||
XML_ELEMENT_CONTENT_OR
|
XML_ELEMENT_CONTENT_OR
|
||||||
} xmlElementContentType;
|
} xmlElementContentType;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_ELEMENT_CONTENT_ONCE=1,
|
XML_ELEMENT_CONTENT_ONCE = 1,
|
||||||
XML_ELEMENT_CONTENT_OPT,
|
XML_ELEMENT_CONTENT_OPT,
|
||||||
XML_ELEMENT_CONTENT_MULT,
|
XML_ELEMENT_CONTENT_MULT,
|
||||||
XML_ELEMENT_CONTENT_PLUS
|
XML_ELEMENT_CONTENT_PLUS
|
||||||
@ -101,10 +127,11 @@ typedef struct xmlElementContent {
|
|||||||
const CHAR *name; /* Element name */
|
const CHAR *name; /* Element name */
|
||||||
struct xmlElementContent *c1; /* first child */
|
struct xmlElementContent *c1; /* first child */
|
||||||
struct xmlElementContent *c2; /* second child */
|
struct xmlElementContent *c2; /* second child */
|
||||||
} xmlElementContent, *xmlElementContentPtr;
|
} xmlElementContent;
|
||||||
|
typedef xmlElementContent *xmlElementContentPtr;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_ELEMENT_TYPE_EMPTY=1,
|
XML_ELEMENT_TYPE_EMPTY = 1,
|
||||||
XML_ELEMENT_TYPE_ANY,
|
XML_ELEMENT_TYPE_ANY,
|
||||||
XML_ELEMENT_TYPE_MIXED,
|
XML_ELEMENT_TYPE_MIXED,
|
||||||
XML_ELEMENT_TYPE_ELEMENT
|
XML_ELEMENT_TYPE_ELEMENT
|
||||||
@ -114,7 +141,8 @@ typedef struct xmlElement {
|
|||||||
const CHAR *name; /* Element name */
|
const CHAR *name; /* Element name */
|
||||||
xmlElementTypeVal type; /* The type */
|
xmlElementTypeVal type; /* The type */
|
||||||
xmlElementContentPtr content; /* the allowed element content */
|
xmlElementContentPtr content; /* the allowed element content */
|
||||||
} xmlElement, *xmlElementPtr;
|
} xmlElement;
|
||||||
|
typedef xmlElement *xmlElementPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An XML namespace.
|
* An XML namespace.
|
||||||
@ -123,7 +151,7 @@ typedef struct xmlElement {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XML_GLOBAL_NAMESPACE=1, /* old style global namespace */
|
XML_GLOBAL_NAMESPACE = 1, /* old style global namespace */
|
||||||
XML_LOCAL_NAMESPACE /* new style local scoping */
|
XML_LOCAL_NAMESPACE /* new style local scoping */
|
||||||
} xmlNsType;
|
} xmlNsType;
|
||||||
|
|
||||||
@ -132,7 +160,8 @@ typedef struct xmlNs {
|
|||||||
xmlNsType type; /* global or local */
|
xmlNsType type; /* global or local */
|
||||||
const CHAR *href; /* URL for the namespace */
|
const CHAR *href; /* URL for the namespace */
|
||||||
const CHAR *prefix; /* prefix for the namespace */
|
const CHAR *prefix; /* prefix for the namespace */
|
||||||
} xmlNs, *xmlNsPtr;
|
} xmlNs;
|
||||||
|
typedef xmlNs *xmlNsPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An XML DtD, as defined by <!DOCTYPE.
|
* An XML DtD, as defined by <!DOCTYPE.
|
||||||
@ -141,10 +170,13 @@ typedef struct xmlDtd {
|
|||||||
const CHAR *name; /* Name of the DTD */
|
const CHAR *name; /* Name of the DTD */
|
||||||
const CHAR *ExternalID; /* External identifier for PUBLIC DTD */
|
const CHAR *ExternalID; /* External identifier for PUBLIC DTD */
|
||||||
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
|
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
|
||||||
|
void *notations; /* Hash table for notations if any */
|
||||||
void *elements; /* Hash table for elements if any */
|
void *elements; /* Hash table for elements if any */
|
||||||
|
void *attributes; /* Hash table for attributes if any */
|
||||||
void *entities; /* Hash table for entities if any */
|
void *entities; /* Hash table for entities if any */
|
||||||
/* struct xmlDtd *next; * next link for this document */
|
/* struct xmlDtd *next; * next link for this document */
|
||||||
} xmlDtd, *xmlDtdPtr;
|
} xmlDtd;
|
||||||
|
typedef xmlDtd *xmlDtdPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A attribute of an XML node.
|
* A attribute of an XML node.
|
||||||
@ -159,7 +191,8 @@ typedef struct xmlAttr {
|
|||||||
struct xmlAttr *next; /* parent->childs link */
|
struct xmlAttr *next; /* parent->childs link */
|
||||||
const CHAR *name; /* the name of the property */
|
const CHAR *name; /* the name of the property */
|
||||||
struct xmlNode *val; /* the value of the property */
|
struct xmlNode *val; /* the value of the property */
|
||||||
} xmlAttr, *xmlAttrPtr;
|
} xmlAttr;
|
||||||
|
typedef xmlAttr *xmlAttrPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A node in an XML tree.
|
* A node in an XML tree.
|
||||||
@ -181,7 +214,9 @@ typedef struct xmlNode {
|
|||||||
xmlNs *ns; /* pointer to the associated namespace */
|
xmlNs *ns; /* pointer to the associated namespace */
|
||||||
xmlNs *nsDef; /* namespace definitions on this node */
|
xmlNs *nsDef; /* namespace definitions on this node */
|
||||||
CHAR *content; /* the content */
|
CHAR *content; /* the content */
|
||||||
} xmlNode, *xmlNodePtr;
|
} _xmlNode;
|
||||||
|
typedef _xmlNode xmlNode;
|
||||||
|
typedef _xmlNode *xmlNodePtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An XML document.
|
* An XML document.
|
||||||
@ -201,7 +236,9 @@ typedef struct xmlDoc {
|
|||||||
struct xmlDtd *extSubset; /* the document external subset */
|
struct xmlDtd *extSubset; /* the document external subset */
|
||||||
struct xmlNs *oldNs; /* Global namespace, the old way */
|
struct xmlNs *oldNs; /* Global namespace, the old way */
|
||||||
struct xmlNode *root; /* the document tree */
|
struct xmlNode *root; /* the document tree */
|
||||||
} xmlDoc, *xmlDocPtr;
|
} _xmlDoc;
|
||||||
|
typedef _xmlDoc xmlDoc;
|
||||||
|
typedef xmlDoc *xmlDocPtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Variables.
|
* Variables.
|
||||||
@ -213,110 +250,110 @@ extern int xmlIndentTreeOutput; /* try to indent the tree dumps */
|
|||||||
/*
|
/*
|
||||||
* Creating/freeing new structures
|
* Creating/freeing new structures
|
||||||
*/
|
*/
|
||||||
extern xmlDtdPtr xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
|
xmlDtdPtr xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID);
|
const CHAR *ExternalID, const CHAR *SystemID);
|
||||||
extern xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *name,
|
||||||
const CHAR *ExternalID, const CHAR *SystemID);
|
const CHAR *ExternalID, const CHAR *SystemID);
|
||||||
extern void xmlFreeDtd(xmlDtdPtr cur);
|
void xmlFreeDtd(xmlDtdPtr cur);
|
||||||
extern xmlNsPtr xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *AS);
|
xmlNsPtr xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *prefix);
|
||||||
extern xmlNsPtr xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *AS);
|
xmlNsPtr xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *prefix);
|
||||||
extern void xmlFreeNs(xmlNsPtr cur);
|
void xmlFreeNs(xmlNsPtr cur);
|
||||||
extern xmlDocPtr xmlNewDoc(const CHAR *version);
|
xmlDocPtr xmlNewDoc(const CHAR *version);
|
||||||
extern void xmlFreeDoc(xmlDocPtr cur);
|
void xmlFreeDoc(xmlDocPtr cur);
|
||||||
extern xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const CHAR *name,
|
xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const CHAR *name,
|
||||||
const CHAR *value);
|
const CHAR *value);
|
||||||
extern xmlAttrPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
|
xmlAttrPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
|
||||||
const CHAR *value);
|
const CHAR *value);
|
||||||
extern void xmlFreePropList(xmlAttrPtr cur);
|
void xmlFreePropList(xmlAttrPtr cur);
|
||||||
extern void xmlFreeProp(xmlAttrPtr cur);
|
void xmlFreeProp(xmlAttrPtr cur);
|
||||||
extern xmlAttrPtr xmlCopyProp(xmlAttrPtr cur);
|
xmlAttrPtr xmlCopyProp(xmlAttrPtr cur);
|
||||||
extern xmlAttrPtr xmlCopyPropList(xmlAttrPtr cur);
|
xmlAttrPtr xmlCopyPropList(xmlAttrPtr cur);
|
||||||
extern xmlDtdPtr xmlCopyDtd(xmlDtdPtr dtd);
|
xmlDtdPtr xmlCopyDtd(xmlDtdPtr dtd);
|
||||||
extern xmlDocPtr xmlCopyDoc(xmlDocPtr doc, int recursive);
|
xmlDocPtr xmlCopyDoc(xmlDocPtr doc, int recursive);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creating new nodes
|
* Creating new nodes
|
||||||
*/
|
*/
|
||||||
extern xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
|
||||||
const CHAR *name, CHAR *content);
|
const CHAR *name, CHAR *content);
|
||||||
extern xmlNodePtr xmlNewNode(xmlNsPtr ns, const CHAR *name);
|
xmlNodePtr xmlNewNode(xmlNsPtr ns, const CHAR *name);
|
||||||
extern xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
|
xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
|
||||||
const CHAR *name, CHAR *content);
|
const CHAR *name, CHAR *content);
|
||||||
extern xmlNodePtr xmlNewDocText(xmlDocPtr doc, const CHAR *content);
|
xmlNodePtr xmlNewDocText(xmlDocPtr doc, const CHAR *content);
|
||||||
extern xmlNodePtr xmlNewText(const CHAR *content);
|
xmlNodePtr xmlNewText(const CHAR *content);
|
||||||
extern xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
|
xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
|
||||||
extern xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
|
xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
|
||||||
extern xmlNodePtr xmlNewDocComment(xmlDocPtr doc, CHAR *content);
|
xmlNodePtr xmlNewDocComment(xmlDocPtr doc, CHAR *content);
|
||||||
extern xmlNodePtr xmlNewComment(CHAR *content);
|
xmlNodePtr xmlNewComment(CHAR *content);
|
||||||
extern xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
|
xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
|
||||||
extern xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
|
xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
|
||||||
extern xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
|
xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Navigating
|
* Navigating
|
||||||
*/
|
*/
|
||||||
extern xmlNodePtr xmlGetLastChild(xmlNodePtr node);
|
xmlNodePtr xmlGetLastChild(xmlNodePtr parent);
|
||||||
extern int xmlNodeIsText(xmlNodePtr node);
|
int xmlNodeIsText(xmlNodePtr node);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Changing the structure
|
* Changing the structure
|
||||||
*/
|
*/
|
||||||
extern xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
|
xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
|
||||||
extern void xmlUnlinkNode(xmlNodePtr cur);
|
void xmlUnlinkNode(xmlNodePtr cur);
|
||||||
|
|
||||||
extern xmlNodePtr xmlTextMerge(xmlNodePtr first, xmlNodePtr second);
|
xmlNodePtr xmlTextMerge(xmlNodePtr first, xmlNodePtr second);
|
||||||
extern void xmlTextConcat(xmlNodePtr node, const CHAR *content, int len);
|
void xmlTextConcat(xmlNodePtr node, const CHAR *content, int len);
|
||||||
|
|
||||||
extern void xmlFreeNodeList(xmlNodePtr cur);
|
void xmlFreeNodeList(xmlNodePtr cur);
|
||||||
extern void xmlFreeNode(xmlNodePtr cur);
|
void xmlFreeNode(xmlNodePtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Namespaces
|
* Namespaces
|
||||||
*/
|
*/
|
||||||
extern xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node,
|
xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node,
|
||||||
const CHAR *nameSpace);
|
const CHAR *nameSpace);
|
||||||
extern xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node,
|
xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node,
|
||||||
const CHAR *href);
|
const CHAR *href);
|
||||||
extern void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
|
void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
|
||||||
extern xmlNsPtr xmlCopyNamespace(xmlNsPtr cur);
|
xmlNsPtr xmlCopyNamespace(xmlNsPtr cur);
|
||||||
extern xmlNsPtr xmlCopyNamespaceList(xmlNsPtr cur);
|
xmlNsPtr xmlCopyNamespaceList(xmlNsPtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Changing the content.
|
* Changing the content.
|
||||||
*/
|
*/
|
||||||
extern xmlAttrPtr xmlSetProp(xmlNodePtr node, const CHAR *name,
|
xmlAttrPtr xmlSetProp(xmlNodePtr node, const CHAR *name,
|
||||||
const CHAR *value);
|
const CHAR *value);
|
||||||
extern CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
|
CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
|
||||||
extern xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value);
|
xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value);
|
||||||
extern xmlNodePtr xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value,
|
xmlNodePtr xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value,
|
||||||
int len);
|
int len);
|
||||||
extern CHAR *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine);
|
CHAR *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine);
|
||||||
extern void xmlNodeSetContent(xmlNodePtr cur, const CHAR *content);
|
void xmlNodeSetContent(xmlNodePtr cur, const CHAR *content);
|
||||||
extern void xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
void xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
||||||
extern void xmlNodeAddContent(xmlNodePtr cur, const CHAR *content);
|
void xmlNodeAddContent(xmlNodePtr cur, const CHAR *content);
|
||||||
extern void xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
void xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len);
|
||||||
extern CHAR *xmlNodeGetContent(xmlNodePtr cur);
|
CHAR *xmlNodeGetContent(xmlNodePtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal, don't use
|
* Internal, don't use
|
||||||
*/
|
*/
|
||||||
extern void xmlBufferWriteCHAR(const CHAR *string);
|
void xmlBufferWriteCHAR(const CHAR *string);
|
||||||
extern void xmlBufferWriteChar(const char *string);
|
void xmlBufferWriteChar(const char *string);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Saving
|
* Saving
|
||||||
*/
|
*/
|
||||||
extern void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
|
void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
|
||||||
extern void xmlDocDump(FILE *f, xmlDocPtr doc);
|
void xmlDocDump(FILE *f, xmlDocPtr cur);
|
||||||
int xmlSaveFile(const char *filename, xmlDocPtr cur);
|
int xmlSaveFile(const char *filename, xmlDocPtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compression
|
* Compression
|
||||||
*/
|
*/
|
||||||
extern int xmlGetDocCompressMode (xmlDocPtr doc);
|
int xmlGetDocCompressMode (xmlDocPtr doc);
|
||||||
extern void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
|
void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
|
||||||
extern int xmlGetCompressMode(void);
|
int xmlGetCompressMode(void);
|
||||||
extern void xmlSetCompressMode(int mode);
|
void xmlSetCompressMode(int mode);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
681
valid.c
681
valid.c
@ -26,7 +26,7 @@
|
|||||||
*
|
*
|
||||||
* Allocate an element content structure.
|
* Allocate an element content structure.
|
||||||
*
|
*
|
||||||
* return values: NULL if not, othervise the new element content structure
|
* Returns NULL if not, othervise the new element content structure
|
||||||
*/
|
*/
|
||||||
xmlElementContentPtr
|
xmlElementContentPtr
|
||||||
xmlNewElementContent(CHAR *name, int type) {
|
xmlNewElementContent(CHAR *name, int type) {
|
||||||
@ -60,6 +60,7 @@ xmlNewElementContent(CHAR *name, int type) {
|
|||||||
ret->name = xmlStrdup(name);
|
ret->name = xmlStrdup(name);
|
||||||
else
|
else
|
||||||
ret->name = NULL;
|
ret->name = NULL;
|
||||||
|
ret->c1 = ret->c2 = NULL;
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,12 +70,17 @@ xmlNewElementContent(CHAR *name, int type) {
|
|||||||
*
|
*
|
||||||
* Build a copy of an element content description.
|
* Build a copy of an element content description.
|
||||||
*
|
*
|
||||||
* return values: the new xmlElementContentPtr or NULL in case of error.
|
* Returns the new xmlElementContentPtr or NULL in case of error.
|
||||||
*/
|
*/
|
||||||
xmlElementContentPtr
|
xmlElementContentPtr
|
||||||
xmlCopyElementContent(xmlElementContentPtr content) {
|
xmlCopyElementContent(xmlElementContentPtr cur) {
|
||||||
/* TODO !!! */
|
xmlElementContentPtr ret;
|
||||||
return(NULL);
|
|
||||||
|
if (cur == NULL) return(NULL);
|
||||||
|
ret = xmlNewElementContent((CHAR *) cur->name, cur->type);
|
||||||
|
if (cur->c1 != NULL) cur->c1 = xmlCopyElementContent(cur->c1);
|
||||||
|
if (cur->c2 != NULL) cur->c2 = xmlCopyElementContent(cur->c2);
|
||||||
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -85,7 +91,12 @@ xmlCopyElementContent(xmlElementContentPtr content) {
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
xmlFreeElementContent(xmlElementContentPtr cur) {
|
xmlFreeElementContent(xmlElementContentPtr cur) {
|
||||||
/* TODO !!! */
|
if (cur == NULL) return;
|
||||||
|
if (cur->c1 != NULL) xmlFreeElementContent(cur->c1);
|
||||||
|
if (cur->c2 != NULL) xmlFreeElementContent(cur->c2);
|
||||||
|
if (cur->name != NULL) free((CHAR *) cur->name);
|
||||||
|
memset(cur, -1, sizeof(xmlElementContent));
|
||||||
|
free(cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -166,7 +177,7 @@ xmlDumpElementContent(xmlElementContentPtr content, int glob) {
|
|||||||
*
|
*
|
||||||
* create and initialize an empty element hash table.
|
* create and initialize an empty element hash table.
|
||||||
*
|
*
|
||||||
* return values: the xmlElementTablePtr just created or NULL in case of error.
|
* Returns the xmlElementTablePtr just created or NULL in case of error.
|
||||||
*/
|
*/
|
||||||
xmlElementTablePtr
|
xmlElementTablePtr
|
||||||
xmlCreateElementTable(void) {
|
xmlCreateElementTable(void) {
|
||||||
@ -179,7 +190,7 @@ xmlCreateElementTable(void) {
|
|||||||
sizeof(xmlElementTable));
|
sizeof(xmlElementTable));
|
||||||
return(NULL);
|
return(NULL);
|
||||||
}
|
}
|
||||||
ret->max_elements = XML_MIN_ENTITIES_TABLE;
|
ret->max_elements = XML_MIN_ELEMENT_TABLE;
|
||||||
ret->nb_elements = 0;
|
ret->nb_elements = 0;
|
||||||
ret->table = (xmlElementPtr )
|
ret->table = (xmlElementPtr )
|
||||||
malloc(ret->max_elements * sizeof(xmlElement));
|
malloc(ret->max_elements * sizeof(xmlElement));
|
||||||
@ -195,14 +206,17 @@ xmlCreateElementTable(void) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* xmlAddElementDecl:
|
* xmlAddElementDecl:
|
||||||
|
* @dtd: pointer to the DTD
|
||||||
* @name: the entity name
|
* @name: the entity name
|
||||||
|
* @type: the element type
|
||||||
|
* @content: the element content tree or NULL
|
||||||
*
|
*
|
||||||
* Register a new element declaration
|
* Register a new element declaration
|
||||||
*
|
*
|
||||||
* return values: NULL if not, othervise the entity
|
* Returns NULL if not, othervise the entity
|
||||||
*/
|
*/
|
||||||
xmlElementPtr
|
xmlElementPtr
|
||||||
xmlAddElementDecl(xmlDtdPtr dtd, char *name, int type,
|
xmlAddElementDecl(xmlDtdPtr dtd, CHAR *name, int type,
|
||||||
xmlElementContentPtr content) {
|
xmlElementContentPtr content) {
|
||||||
xmlElementPtr ret, cur;
|
xmlElementPtr ret, cur;
|
||||||
xmlElementTablePtr table;
|
xmlElementTablePtr table;
|
||||||
@ -318,14 +332,13 @@ xmlFreeElement(xmlElementPtr elem) {
|
|||||||
if (elem->name != NULL)
|
if (elem->name != NULL)
|
||||||
free((CHAR *) elem->name);
|
free((CHAR *) elem->name);
|
||||||
memset(elem, -1, sizeof(xmlElement));
|
memset(elem, -1, sizeof(xmlElement));
|
||||||
free(elem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xmlFreeElementTable:
|
* xmlFreeElementTable:
|
||||||
* @table: An element table
|
* @table: An element table
|
||||||
*
|
*
|
||||||
* Deallocate the memory used by an entities hash table.
|
* Deallocate the memory used by an element hash table.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
xmlFreeElementTable(xmlElementTablePtr table) {
|
xmlFreeElementTable(xmlElementTablePtr table) {
|
||||||
@ -346,7 +359,7 @@ xmlFreeElementTable(xmlElementTablePtr table) {
|
|||||||
*
|
*
|
||||||
* Build a copy of an element table.
|
* Build a copy of an element table.
|
||||||
*
|
*
|
||||||
* return values: the new xmlElementTablePtr or NULL in case of error.
|
* Returns the new xmlElementTablePtr or NULL in case of error.
|
||||||
*/
|
*/
|
||||||
xmlElementTablePtr
|
xmlElementTablePtr
|
||||||
xmlCopyElementTable(xmlElementTablePtr table) {
|
xmlCopyElementTable(xmlElementTablePtr table) {
|
||||||
@ -431,3 +444,645 @@ xmlDumpElementTable(xmlElementTablePtr table) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlCreateEnumeration:
|
||||||
|
* @name: the enumeration name or NULL
|
||||||
|
*
|
||||||
|
* create and initialize an enumeration attribute node.
|
||||||
|
*
|
||||||
|
* Returns the xmlEnumerationPtr just created or NULL in case
|
||||||
|
* of error.
|
||||||
|
*/
|
||||||
|
xmlEnumerationPtr
|
||||||
|
xmlCreateEnumeration(CHAR *name) {
|
||||||
|
xmlEnumerationPtr ret;
|
||||||
|
|
||||||
|
ret = (xmlEnumerationPtr) malloc(sizeof(xmlEnumeration));
|
||||||
|
if (ret == NULL) {
|
||||||
|
fprintf(stderr, "xmlCreateEnumeration : malloc(%d) failed\n",
|
||||||
|
sizeof(xmlEnumeration));
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name != NULL)
|
||||||
|
ret->name = xmlStrdup(name);
|
||||||
|
else
|
||||||
|
ret->name = NULL;
|
||||||
|
ret->next = NULL;
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlFreeEnumeration:
|
||||||
|
* @cur: the tree to free.
|
||||||
|
*
|
||||||
|
* free an enumeration attribute node (recursive).
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlFreeEnumeration(xmlEnumerationPtr cur) {
|
||||||
|
if (cur == NULL) return;
|
||||||
|
|
||||||
|
if (cur->next != NULL) xmlFreeEnumeration(cur->next);
|
||||||
|
|
||||||
|
if (cur->name != NULL) free((CHAR *) cur->name);
|
||||||
|
memset(cur, -1, sizeof(xmlEnumeration));
|
||||||
|
free(cur);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlCopyEnumeration:
|
||||||
|
* @cur: the tree to copy.
|
||||||
|
*
|
||||||
|
* Copy an enumeration attribute node (recursive).
|
||||||
|
*
|
||||||
|
* Returns the xmlEnumerationPtr just created or NULL in case
|
||||||
|
* of error.
|
||||||
|
*/
|
||||||
|
xmlEnumerationPtr
|
||||||
|
xmlCopyEnumeration(xmlEnumerationPtr cur) {
|
||||||
|
xmlEnumerationPtr ret;
|
||||||
|
|
||||||
|
if (cur == NULL) return(NULL);
|
||||||
|
ret = xmlCreateEnumeration((CHAR *) cur->name);
|
||||||
|
|
||||||
|
if (cur->next != NULL) ret->next = xmlCopyEnumeration(cur->next);
|
||||||
|
else ret->next = NULL;
|
||||||
|
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlCreateAttributeTable:
|
||||||
|
*
|
||||||
|
* create and initialize an empty attribute hash table.
|
||||||
|
*
|
||||||
|
* Returns the xmlAttributeTablePtr just created or NULL in case
|
||||||
|
* of error.
|
||||||
|
*/
|
||||||
|
xmlAttributeTablePtr
|
||||||
|
xmlCreateAttributeTable(void) {
|
||||||
|
xmlAttributeTablePtr ret;
|
||||||
|
|
||||||
|
ret = (xmlAttributeTablePtr)
|
||||||
|
malloc(sizeof(xmlAttributeTable));
|
||||||
|
if (ret == NULL) {
|
||||||
|
fprintf(stderr, "xmlCreateAttributeTable : malloc(%d) failed\n",
|
||||||
|
sizeof(xmlAttributeTable));
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
ret->max_attributes = XML_MIN_ATTRIBUTE_TABLE;
|
||||||
|
ret->nb_attributes = 0;
|
||||||
|
ret->table = (xmlAttributePtr )
|
||||||
|
malloc(ret->max_attributes * sizeof(xmlAttribute));
|
||||||
|
if (ret == NULL) {
|
||||||
|
fprintf(stderr, "xmlCreateAttributeTable : malloc(%d) failed\n",
|
||||||
|
ret->max_attributes * sizeof(xmlAttribute));
|
||||||
|
free(ret);
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlAddAttributeDecl:
|
||||||
|
* @dtd: pointer to the DTD
|
||||||
|
* @elem: the element name
|
||||||
|
* @name: the attribute name
|
||||||
|
* @type: the attribute type
|
||||||
|
* @def: the attribute default type
|
||||||
|
* @defaultValue: the attribute default value
|
||||||
|
* @tree: if it's an enumeration, the associated list
|
||||||
|
*
|
||||||
|
* Register a new attribute declaration
|
||||||
|
*
|
||||||
|
* Returns NULL if not, othervise the entity
|
||||||
|
*/
|
||||||
|
xmlAttributePtr
|
||||||
|
xmlAddAttributeDecl(xmlDtdPtr dtd, CHAR *elem, CHAR *name, int type, int def,
|
||||||
|
CHAR *defaultValue, xmlEnumerationPtr tree) {
|
||||||
|
xmlAttributePtr ret, cur;
|
||||||
|
xmlAttributeTablePtr table;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (dtd == NULL) {
|
||||||
|
fprintf(stderr, "xmlAddAttributeDecl: dtd == NULL\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
if (name == NULL) {
|
||||||
|
fprintf(stderr, "xmlAddAttributeDecl: name == NULL\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
if (elem == NULL) {
|
||||||
|
fprintf(stderr, "xmlAddAttributeDecl: elem == NULL\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
/* TODO: Lacks verifications !!! */
|
||||||
|
switch (type) {
|
||||||
|
case XML_ATTRIBUTE_CDATA:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ID:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_IDREF:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_IDREFS:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ENTITY:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ENTITIES:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_NMTOKEN:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_NMTOKENS:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ENUMERATION:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_NOTATION:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "xmlAddAttributeDecl: unknown type %d\n", type);
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create the Attribute table if needed.
|
||||||
|
*/
|
||||||
|
table = dtd->attributes;
|
||||||
|
if (table == NULL)
|
||||||
|
table = dtd->attributes = xmlCreateAttributeTable();
|
||||||
|
if (table == NULL) {
|
||||||
|
fprintf(stderr, "xmlAddAttributeDecl: Table creation failed!\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validity Check:
|
||||||
|
* Search the DTD for previous declarations of the ATTLIST
|
||||||
|
*/
|
||||||
|
for (i = 0;i < table->nb_attributes;i++) {
|
||||||
|
cur = &table->table[i];
|
||||||
|
if ((!xmlStrcmp(cur->name, name)) && (!xmlStrcmp(cur->elem, elem))) {
|
||||||
|
/*
|
||||||
|
* The attribute is already defined in this Dtd.
|
||||||
|
*/
|
||||||
|
fprintf(stderr,
|
||||||
|
"xmlAddAttributeDecl: %s already defined\n", name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Grow the table, if needed.
|
||||||
|
*/
|
||||||
|
if (table->nb_attributes >= table->max_attributes) {
|
||||||
|
/*
|
||||||
|
* need more attributes.
|
||||||
|
*/
|
||||||
|
table->max_attributes *= 2;
|
||||||
|
table->table = (xmlAttributePtr)
|
||||||
|
realloc(table->table, table->max_attributes * sizeof(xmlAttribute));
|
||||||
|
if (table->table) {
|
||||||
|
fprintf(stderr, "xmlAddAttributeDecl: out of memory\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ret = &table->table[table->nb_attributes];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fill the structure.
|
||||||
|
*/
|
||||||
|
ret->type = type;
|
||||||
|
ret->name = xmlStrdup(name);
|
||||||
|
ret->elem = xmlStrdup(elem);
|
||||||
|
ret->def = def;
|
||||||
|
ret->tree = tree;
|
||||||
|
if (defaultValue != NULL)
|
||||||
|
ret->defaultValue = xmlStrdup(defaultValue);
|
||||||
|
else
|
||||||
|
ret->defaultValue = NULL;
|
||||||
|
table->nb_attributes++;
|
||||||
|
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlFreeAttribute:
|
||||||
|
* @elem: An attribute
|
||||||
|
*
|
||||||
|
* Deallocate the memory used by an attribute definition
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlFreeAttribute(xmlAttributePtr attr) {
|
||||||
|
if (attr == NULL) return;
|
||||||
|
if (attr->tree != NULL)
|
||||||
|
xmlFreeEnumeration(attr->tree);
|
||||||
|
if (attr->elem != NULL)
|
||||||
|
free((CHAR *) attr->elem);
|
||||||
|
if (attr->name != NULL)
|
||||||
|
free((CHAR *) attr->name);
|
||||||
|
if (attr->defaultValue != NULL)
|
||||||
|
free((CHAR *) attr->defaultValue);
|
||||||
|
memset(attr, -1, sizeof(xmlAttribute));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlFreeAttributeTable:
|
||||||
|
* @table: An attribute table
|
||||||
|
*
|
||||||
|
* Deallocate the memory used by an entities hash table.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlFreeAttributeTable(xmlAttributeTablePtr table) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (table == NULL) return;
|
||||||
|
|
||||||
|
for (i = 0;i < table->nb_attributes;i++) {
|
||||||
|
xmlFreeAttribute(&table->table[i]);
|
||||||
|
}
|
||||||
|
free(table->table);
|
||||||
|
free(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlCopyAttributeTable:
|
||||||
|
* @table: An attribute table
|
||||||
|
*
|
||||||
|
* Build a copy of an attribute table.
|
||||||
|
*
|
||||||
|
* Returns the new xmlAttributeTablePtr or NULL in case of error.
|
||||||
|
*/
|
||||||
|
xmlAttributeTablePtr
|
||||||
|
xmlCopyAttributeTable(xmlAttributeTablePtr table) {
|
||||||
|
xmlAttributeTablePtr ret;
|
||||||
|
xmlAttributePtr cur, attr;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
ret = (xmlAttributeTablePtr) malloc(sizeof(xmlAttributeTable));
|
||||||
|
if (ret == NULL) {
|
||||||
|
fprintf(stderr, "xmlCopyAttributeTable: out of memory !\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
ret->table = (xmlAttributePtr) malloc(table->max_attributes *
|
||||||
|
sizeof(xmlAttribute));
|
||||||
|
if (ret->table == NULL) {
|
||||||
|
fprintf(stderr, "xmlCopyAttributeTable: out of memory !\n");
|
||||||
|
free(ret);
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
ret->max_attributes = table->max_attributes;
|
||||||
|
ret->nb_attributes = table->nb_attributes;
|
||||||
|
for (i = 0;i < ret->nb_attributes;i++) {
|
||||||
|
cur = &ret->table[i];
|
||||||
|
attr = &table->table[i];
|
||||||
|
cur->type = attr->type;
|
||||||
|
cur->def = attr->def;
|
||||||
|
cur->tree = xmlCopyEnumeration(attr->tree);
|
||||||
|
if (attr->elem != NULL)
|
||||||
|
cur->elem = xmlStrdup(attr->elem);
|
||||||
|
else
|
||||||
|
cur->elem = NULL;
|
||||||
|
if (attr->name != NULL)
|
||||||
|
cur->name = xmlStrdup(attr->name);
|
||||||
|
else
|
||||||
|
cur->name = NULL;
|
||||||
|
if (attr->defaultValue != NULL)
|
||||||
|
cur->defaultValue = xmlStrdup(attr->defaultValue);
|
||||||
|
else
|
||||||
|
cur->defaultValue = NULL;
|
||||||
|
}
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlDumpAttributeTable:
|
||||||
|
* @table: An attribute table
|
||||||
|
*
|
||||||
|
* This will dump the content of the attribute table as an XML DTD definition
|
||||||
|
*
|
||||||
|
* NOTE: TODO an extra parameter allowing a reentant implementation will
|
||||||
|
* be added.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlDumpAttributeTable(xmlAttributeTablePtr table) {
|
||||||
|
int i;
|
||||||
|
xmlAttributePtr cur;
|
||||||
|
|
||||||
|
if (table == NULL) return;
|
||||||
|
|
||||||
|
for (i = 0;i < table->nb_attributes;i++) {
|
||||||
|
cur = &table->table[i];
|
||||||
|
xmlBufferWriteChar("<!ATTLIST ");
|
||||||
|
xmlBufferWriteCHAR(cur->elem);
|
||||||
|
xmlBufferWriteChar(" ");
|
||||||
|
xmlBufferWriteCHAR(cur->name);
|
||||||
|
switch (cur->type) {
|
||||||
|
case XML_ATTRIBUTE_CDATA:
|
||||||
|
xmlBufferWriteChar(" CDATA");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ID:
|
||||||
|
xmlBufferWriteChar(" ID");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_IDREF:
|
||||||
|
xmlBufferWriteChar(" IDREF");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_IDREFS:
|
||||||
|
xmlBufferWriteChar(" IDREFS");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ENTITY:
|
||||||
|
xmlBufferWriteChar(" ENTITY");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ENTITIES:
|
||||||
|
xmlBufferWriteChar(" ENTITIES");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_NMTOKEN:
|
||||||
|
xmlBufferWriteChar(" NMTOKEN");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_NMTOKENS:
|
||||||
|
xmlBufferWriteChar(" NMTOKENS");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_ENUMERATION:
|
||||||
|
xmlBufferWriteChar(" (pbm)");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_NOTATION:
|
||||||
|
xmlBufferWriteChar(" NOTATION (pbm)");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr,
|
||||||
|
"xmlDumpAttributeTable: internal: unknown type %d\n",
|
||||||
|
cur->type);
|
||||||
|
}
|
||||||
|
switch (cur->def) {
|
||||||
|
case XML_ATTRIBUTE_NONE:
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_REQUIRED:
|
||||||
|
xmlBufferWriteChar(" #REQUIRED");
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_IMPLIED:
|
||||||
|
xmlBufferWriteChar(" #IMPLIED");
|
||||||
|
if (cur->defaultValue != NULL) {
|
||||||
|
xmlBufferWriteChar(" \"");
|
||||||
|
xmlBufferWriteCHAR(cur->defaultValue);
|
||||||
|
xmlBufferWriteChar("\"");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case XML_ATTRIBUTE_FIXED:
|
||||||
|
xmlBufferWriteChar(" #FIXED \"");
|
||||||
|
xmlBufferWriteCHAR(cur->defaultValue);
|
||||||
|
xmlBufferWriteChar("\"");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr,
|
||||||
|
"xmlDumpAttributeTable: internal: unknown default %d\n",
|
||||||
|
cur->def);
|
||||||
|
}
|
||||||
|
xmlBufferWriteChar(">\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
* *
|
||||||
|
* NOTATIONs *
|
||||||
|
* *
|
||||||
|
************************************************************************/
|
||||||
|
/**
|
||||||
|
* xmlCreateNotationTable:
|
||||||
|
*
|
||||||
|
* create and initialize an empty notation hash table.
|
||||||
|
*
|
||||||
|
* Returns the xmlNotationTablePtr just created or NULL in case
|
||||||
|
* of error.
|
||||||
|
*/
|
||||||
|
xmlNotationTablePtr
|
||||||
|
xmlCreateNotationTable(void) {
|
||||||
|
xmlNotationTablePtr ret;
|
||||||
|
|
||||||
|
ret = (xmlNotationTablePtr)
|
||||||
|
malloc(sizeof(xmlNotationTable));
|
||||||
|
if (ret == NULL) {
|
||||||
|
fprintf(stderr, "xmlCreateNotationTable : malloc(%d) failed\n",
|
||||||
|
sizeof(xmlNotationTable));
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
ret->max_notations = XML_MIN_NOTATION_TABLE;
|
||||||
|
ret->nb_notations = 0;
|
||||||
|
ret->table = (xmlNotationPtr )
|
||||||
|
malloc(ret->max_notations * sizeof(xmlNotation));
|
||||||
|
if (ret == NULL) {
|
||||||
|
fprintf(stderr, "xmlCreateNotationTable : malloc(%d) failed\n",
|
||||||
|
ret->max_notations * sizeof(xmlNotation));
|
||||||
|
free(ret);
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlAddNotationDecl:
|
||||||
|
* @dtd: pointer to the DTD
|
||||||
|
* @name: the entity name
|
||||||
|
* @PublicID: the public identifier or NULL
|
||||||
|
* @SystemID: the system identifier or NULL
|
||||||
|
*
|
||||||
|
* Register a new notation declaration
|
||||||
|
*
|
||||||
|
* Returns NULL if not, othervise the entity
|
||||||
|
*/
|
||||||
|
xmlNotationPtr
|
||||||
|
xmlAddNotationDecl(xmlDtdPtr dtd, CHAR *name, CHAR *PublicID, CHAR *SystemID) {
|
||||||
|
xmlNotationPtr ret, cur;
|
||||||
|
xmlNotationTablePtr table;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (dtd == NULL) {
|
||||||
|
fprintf(stderr, "xmlAddNotationDecl: dtd == NULL\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
if (name == NULL) {
|
||||||
|
fprintf(stderr, "xmlAddNotationDecl: name == NULL\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
if ((PublicID == NULL) && (SystemID == NULL)) {
|
||||||
|
fprintf(stderr, "xmlAddNotationDecl: no PUBLIC ID nor SYSTEM ID\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create the Notation table if needed.
|
||||||
|
*/
|
||||||
|
table = dtd->notations;
|
||||||
|
if (table == NULL)
|
||||||
|
table = dtd->notations = xmlCreateNotationTable();
|
||||||
|
if (table == NULL) {
|
||||||
|
fprintf(stderr, "xmlAddNotationDecl: Table creation failed!\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validity Check:
|
||||||
|
* Search the DTD for previous declarations of the ATTLIST
|
||||||
|
*/
|
||||||
|
for (i = 0;i < table->nb_notations;i++) {
|
||||||
|
cur = &table->table[i];
|
||||||
|
if (!xmlStrcmp(cur->name, name)) {
|
||||||
|
/*
|
||||||
|
* The notation is already defined in this Dtd.
|
||||||
|
*/
|
||||||
|
fprintf(stderr,
|
||||||
|
"xmlAddNotationDecl: %s already defined\n", name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Grow the table, if needed.
|
||||||
|
*/
|
||||||
|
if (table->nb_notations >= table->max_notations) {
|
||||||
|
/*
|
||||||
|
* need more notations.
|
||||||
|
*/
|
||||||
|
table->max_notations *= 2;
|
||||||
|
table->table = (xmlNotationPtr)
|
||||||
|
realloc(table->table, table->max_notations * sizeof(xmlNotation));
|
||||||
|
if (table->table) {
|
||||||
|
fprintf(stderr, "xmlAddNotationDecl: out of memory\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ret = &table->table[table->nb_notations];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fill the structure.
|
||||||
|
*/
|
||||||
|
ret->name = xmlStrdup(name);
|
||||||
|
if (SystemID != NULL)
|
||||||
|
ret->SystemID = xmlStrdup(SystemID);
|
||||||
|
else
|
||||||
|
ret->SystemID = NULL;
|
||||||
|
if (PublicID != NULL)
|
||||||
|
ret->PublicID = xmlStrdup(PublicID);
|
||||||
|
else
|
||||||
|
ret->PublicID = NULL;
|
||||||
|
table->nb_notations++;
|
||||||
|
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlFreeNotation:
|
||||||
|
* @not: A notation
|
||||||
|
*
|
||||||
|
* Deallocate the memory used by an notation definition
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlFreeNotation(xmlNotationPtr nota) {
|
||||||
|
if (nota == NULL) return;
|
||||||
|
if (nota->name != NULL)
|
||||||
|
free((CHAR *) nota->name);
|
||||||
|
if (nota->PublicID != NULL)
|
||||||
|
free((CHAR *) nota->PublicID);
|
||||||
|
if (nota->SystemID != NULL)
|
||||||
|
free((CHAR *) nota->SystemID);
|
||||||
|
memset(nota, -1, sizeof(xmlNotation));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlFreeNotationTable:
|
||||||
|
* @table: An notation table
|
||||||
|
*
|
||||||
|
* Deallocate the memory used by an entities hash table.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlFreeNotationTable(xmlNotationTablePtr table) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (table == NULL) return;
|
||||||
|
|
||||||
|
for (i = 0;i < table->nb_notations;i++) {
|
||||||
|
xmlFreeNotation(&table->table[i]);
|
||||||
|
}
|
||||||
|
free(table->table);
|
||||||
|
free(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlCopyNotationTable:
|
||||||
|
* @table: A notation table
|
||||||
|
*
|
||||||
|
* Build a copy of a notation table.
|
||||||
|
*
|
||||||
|
* Returns the new xmlNotationTablePtr or NULL in case of error.
|
||||||
|
*/
|
||||||
|
xmlNotationTablePtr
|
||||||
|
xmlCopyNotationTable(xmlNotationTablePtr table) {
|
||||||
|
xmlNotationTablePtr ret;
|
||||||
|
xmlNotationPtr cur, nota;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
ret = (xmlNotationTablePtr) malloc(sizeof(xmlNotationTable));
|
||||||
|
if (ret == NULL) {
|
||||||
|
fprintf(stderr, "xmlCopyNotationTable: out of memory !\n");
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
ret->table = (xmlNotationPtr) malloc(table->max_notations *
|
||||||
|
sizeof(xmlNotation));
|
||||||
|
if (ret->table == NULL) {
|
||||||
|
fprintf(stderr, "xmlCopyNotationTable: out of memory !\n");
|
||||||
|
free(ret);
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
ret->max_notations = table->max_notations;
|
||||||
|
ret->nb_notations = table->nb_notations;
|
||||||
|
for (i = 0;i < ret->nb_notations;i++) {
|
||||||
|
cur = &ret->table[i];
|
||||||
|
nota = &table->table[i];
|
||||||
|
if (nota->name != NULL)
|
||||||
|
cur->name = xmlStrdup(nota->name);
|
||||||
|
else
|
||||||
|
cur->name = NULL;
|
||||||
|
if (nota->PublicID != NULL)
|
||||||
|
cur->PublicID = xmlStrdup(nota->PublicID);
|
||||||
|
else
|
||||||
|
cur->PublicID = NULL;
|
||||||
|
if (nota->SystemID != NULL)
|
||||||
|
cur->SystemID = xmlStrdup(nota->SystemID);
|
||||||
|
else
|
||||||
|
cur->SystemID = NULL;
|
||||||
|
}
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlDumpNotationTable:
|
||||||
|
* @table: A notation table
|
||||||
|
*
|
||||||
|
* This will dump the content of the notation table as an XML DTD definition
|
||||||
|
*
|
||||||
|
* NOTE: TODO an extra parameter allowing a reentant implementation will
|
||||||
|
* be added.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xmlDumpNotationTable(xmlNotationTablePtr table) {
|
||||||
|
int i;
|
||||||
|
xmlNotationPtr cur;
|
||||||
|
|
||||||
|
if (table == NULL) return;
|
||||||
|
|
||||||
|
for (i = 0;i < table->nb_notations;i++) {
|
||||||
|
cur = &table->table[i];
|
||||||
|
xmlBufferWriteChar("<!NOTATION ");
|
||||||
|
xmlBufferWriteCHAR(cur->name);
|
||||||
|
if (cur->PublicID != NULL) {
|
||||||
|
xmlBufferWriteChar(" PUBLIC \"");
|
||||||
|
xmlBufferWriteCHAR(cur->PublicID);
|
||||||
|
xmlBufferWriteChar("\"");
|
||||||
|
if (cur->SystemID != NULL) {
|
||||||
|
xmlBufferWriteChar(" ");
|
||||||
|
xmlBufferWriteCHAR(cur->SystemID);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
xmlBufferWriteChar(" SYSTEM ");
|
||||||
|
xmlBufferWriteCHAR(cur->SystemID);
|
||||||
|
}
|
||||||
|
xmlBufferWriteChar(" >\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
70
valid.h
70
valid.h
@ -11,6 +11,20 @@
|
|||||||
#define __XML_VALID_H__
|
#define __XML_VALID_H__
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ALl notation declarations are stored in a table
|
||||||
|
* there is one table per DTD
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XML_MIN_NOTATION_TABLE 32
|
||||||
|
|
||||||
|
typedef struct xmlNotationTable {
|
||||||
|
int nb_notations; /* number of notations stored */
|
||||||
|
int max_notations; /* maximum number of notations */
|
||||||
|
xmlNotationPtr table; /* the table of attributes */
|
||||||
|
} xmlNotationTable;
|
||||||
|
typedef xmlNotationTable *xmlNotationTablePtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ALl element declarations are stored in a table
|
* ALl element declarations are stored in a table
|
||||||
* there is one table per DTD
|
* there is one table per DTD
|
||||||
@ -21,16 +35,54 @@
|
|||||||
typedef struct xmlElementTable {
|
typedef struct xmlElementTable {
|
||||||
int nb_elements; /* number of elements stored */
|
int nb_elements; /* number of elements stored */
|
||||||
int max_elements; /* maximum number of elements */
|
int max_elements; /* maximum number of elements */
|
||||||
xmlElementPtr table; /* the table of entities */
|
xmlElementPtr table; /* the table of elements */
|
||||||
} xmlElementTable, *xmlElementTablePtr;
|
} xmlElementTable;
|
||||||
|
typedef xmlElementTable *xmlElementTablePtr;
|
||||||
|
|
||||||
extern xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, char *name, int type,
|
/*
|
||||||
|
* ALl attribute declarations are stored in a table
|
||||||
|
* there is one table per DTD
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define XML_MIN_ATTRIBUTE_TABLE 32
|
||||||
|
|
||||||
|
typedef struct xmlAttributeTable {
|
||||||
|
int nb_attributes; /* number of attributes stored */
|
||||||
|
int max_attributes; /* maximum number of attributes */
|
||||||
|
xmlAttributePtr table; /* the table of attributes */
|
||||||
|
} xmlAttributeTable;
|
||||||
|
typedef xmlAttributeTable *xmlAttributeTablePtr;
|
||||||
|
|
||||||
|
/* Notation */
|
||||||
|
xmlNotationPtr xmlAddNotationDecl(xmlDtdPtr dtd, CHAR *name,
|
||||||
|
CHAR *PublicID, CHAR *SystemID);
|
||||||
|
xmlNotationTablePtr xmlCopyNotationTable(xmlNotationTablePtr table);
|
||||||
|
void xmlFreeNotationTable(xmlNotationTablePtr table);
|
||||||
|
void xmlDumpNotationTable(xmlNotationTablePtr table);
|
||||||
|
|
||||||
|
/* Element Content */
|
||||||
|
xmlElementContentPtr xmlNewElementContent(CHAR *name, int type);
|
||||||
|
xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
|
||||||
|
void xmlFreeElementContent(xmlElementContentPtr cur);
|
||||||
|
|
||||||
|
/* Element */
|
||||||
|
xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, CHAR *name, int type,
|
||||||
xmlElementContentPtr content);
|
xmlElementContentPtr content);
|
||||||
extern xmlElementContentPtr xmlNewElementContent(CHAR *name, int type);
|
xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
|
||||||
extern xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
|
void xmlFreeElementTable(xmlElementTablePtr table);
|
||||||
extern void xmlFreeElementContent(xmlElementContentPtr cur);
|
void xmlDumpElementTable(xmlElementTablePtr table);
|
||||||
|
|
||||||
|
/* Enumeration */
|
||||||
|
xmlEnumerationPtr xmlCreateEnumeration(CHAR *name);
|
||||||
|
void xmlFreeEnumeration(xmlEnumerationPtr cur);
|
||||||
|
xmlEnumerationPtr xmlCopyEnumeration(xmlEnumerationPtr cur);
|
||||||
|
|
||||||
|
/* Attribute */
|
||||||
|
xmlAttributePtr xmlAddAttributeDecl(xmlDtdPtr dtd, CHAR *elem,
|
||||||
|
CHAR *name, int type, int def,
|
||||||
|
CHAR *defaultValue, xmlEnumerationPtr tree);
|
||||||
|
xmlAttributeTablePtr xmlCopyAttributeTable(xmlAttributeTablePtr table);
|
||||||
|
void xmlFreeAttributeTable(xmlAttributeTablePtr table);
|
||||||
|
void xmlDumpAttributeTable(xmlAttributeTablePtr table);
|
||||||
|
|
||||||
extern xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
|
|
||||||
extern void xmlFreeElementTable(xmlElementTablePtr table);
|
|
||||||
extern void xmlDumpElementTable(xmlElementTablePtr table);
|
|
||||||
#endif /* __XML_VALID_H__ */
|
#endif /* __XML_VALID_H__ */
|
||||||
|
Reference in New Issue
Block a user