mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-28 00:21:53 +03:00
when creating a DOCTYPE use "html" lowercase by default instead of "HTML"
* HTMLparser.c: when creating a DOCTYPE use "html" lowercase by default instead of "HTML" * parser.c xmlreader.c: optimization, gain a few % parsing speed by avoiding calls to "areBlanks" when not needed. * include/libxml/parser.h include/libxml/tree.h: some structure extensions for future work on using per-document dictionaries. Daniel
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
Wed Sep 3 15:24:41 CEST 2003 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
|
* HTMLparser.c: when creating a DOCTYPE use "html" lowercase
|
||||||
|
by default instead of "HTML"
|
||||||
|
* parser.c xmlreader.c: optimization, gain a few % parsing speed by
|
||||||
|
avoiding calls to "areBlanks" when not needed.
|
||||||
|
* include/libxml/parser.h include/libxml/tree.h: some structure
|
||||||
|
extensions for future work on using per-document dictionaries.
|
||||||
|
|
||||||
Wed Sep 3 15:08:06 CEST 2003 Daniel Veillard <daniel@veillard.com>
|
Wed Sep 3 15:08:06 CEST 2003 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* Makefile.am results/*.sax SAXResult/*: removing the SAXresults
|
* Makefile.am results/*.sax SAXResult/*: removing the SAXresults
|
||||||
|
@ -2137,7 +2137,7 @@ htmlNewDocNoDtD(const xmlChar *URI, const xmlChar *ExternalID) {
|
|||||||
cur->_private = NULL;
|
cur->_private = NULL;
|
||||||
if ((ExternalID != NULL) ||
|
if ((ExternalID != NULL) ||
|
||||||
(URI != NULL))
|
(URI != NULL))
|
||||||
xmlCreateIntSubset(cur, BAD_CAST "HTML", ExternalID, URI);
|
xmlCreateIntSubset(cur, BAD_CAST "html", ExternalID, URI);
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4002,7 +4002,7 @@ htmlParseDocument(htmlParserCtxtPtr ctxt) {
|
|||||||
dtd = xmlGetIntSubset(ctxt->myDoc);
|
dtd = xmlGetIntSubset(ctxt->myDoc);
|
||||||
if (dtd == NULL)
|
if (dtd == NULL)
|
||||||
ctxt->myDoc->intSubset =
|
ctxt->myDoc->intSubset =
|
||||||
xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "HTML",
|
xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html",
|
||||||
BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN",
|
BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN",
|
||||||
BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd");
|
BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd");
|
||||||
}
|
}
|
||||||
@ -5058,7 +5058,7 @@ done:
|
|||||||
dtd = xmlGetIntSubset(ctxt->myDoc);
|
dtd = xmlGetIntSubset(ctxt->myDoc);
|
||||||
if (dtd == NULL)
|
if (dtd == NULL)
|
||||||
ctxt->myDoc->intSubset =
|
ctxt->myDoc->intSubset =
|
||||||
xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "HTML",
|
xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html",
|
||||||
BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN",
|
BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN",
|
||||||
BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd");
|
BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd");
|
||||||
}
|
}
|
||||||
|
@ -237,8 +237,9 @@ struct _xmlParserCtxt {
|
|||||||
int recovery; /* run in recovery mode */
|
int recovery; /* run in recovery mode */
|
||||||
int progressive; /* is this a progressive parsing */
|
int progressive; /* is this a progressive parsing */
|
||||||
xmlDictPtr dict; /* dictionnary for the parser */
|
xmlDictPtr dict; /* dictionnary for the parser */
|
||||||
const xmlChar * *atts; /* array for the attributes callbacks */
|
const xmlChar * *atts; /* array for the attributes callbacks */
|
||||||
int maxatts; /* the size of the array */
|
int maxatts; /* the size of the array */
|
||||||
|
int docdict; /* use strings from dict to build tree */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -476,6 +476,7 @@ struct _xmlNode {
|
|||||||
#define XML_GET_LINE(n) \
|
#define XML_GET_LINE(n) \
|
||||||
((n)->type == XML_ELEMENT_NODE ? (int) (n)->content : 0)
|
((n)->type == XML_ELEMENT_NODE ? (int) (n)->content : 0)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xmlDoc:
|
* xmlDoc:
|
||||||
*
|
*
|
||||||
@ -507,6 +508,7 @@ struct _xmlDoc {
|
|||||||
const xmlChar *URL; /* The URI for that document */
|
const xmlChar *URL; /* The URI for that document */
|
||||||
int charset; /* encoding of the in-memory content
|
int charset; /* encoding of the in-memory content
|
||||||
actually an xmlCharEncoding */
|
actually an xmlCharEncoding */
|
||||||
|
struct _xmlDict *dict; /* dict used to allocate names or NULL */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
18
parser.c
18
parser.c
@ -2799,18 +2799,18 @@ get_more:
|
|||||||
}
|
}
|
||||||
nbchar = in - ctxt->input->cur;
|
nbchar = in - ctxt->input->cur;
|
||||||
if (nbchar > 0) {
|
if (nbchar > 0) {
|
||||||
if (IS_BLANK(*ctxt->input->cur)) {
|
if ((ctxt->sax->ignorableWhitespace !=
|
||||||
|
ctxt->sax->characters) &&
|
||||||
|
(IS_BLANK(*ctxt->input->cur))) {
|
||||||
const xmlChar *tmp = ctxt->input->cur;
|
const xmlChar *tmp = ctxt->input->cur;
|
||||||
ctxt->input->cur = in;
|
ctxt->input->cur = in;
|
||||||
|
|
||||||
if (areBlanks(ctxt, tmp, nbchar)) {
|
if (areBlanks(ctxt, tmp, nbchar)) {
|
||||||
if (ctxt->sax->ignorableWhitespace != NULL)
|
ctxt->sax->ignorableWhitespace(ctxt->userData,
|
||||||
ctxt->sax->ignorableWhitespace(ctxt->userData,
|
tmp, nbchar);
|
||||||
tmp, nbchar);
|
} else if (ctxt->sax->characters != NULL)
|
||||||
} else {
|
ctxt->sax->characters(ctxt->userData,
|
||||||
if (ctxt->sax->characters != NULL)
|
tmp, nbchar);
|
||||||
ctxt->sax->characters(ctxt->userData,
|
|
||||||
tmp, nbchar);
|
|
||||||
}
|
|
||||||
line = ctxt->input->line;
|
line = ctxt->input->line;
|
||||||
col = ctxt->input->col;
|
col = ctxt->input->col;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1125,6 +1125,7 @@ xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
|
|||||||
ret->sax->endElement = xmlTextReaderEndElement;
|
ret->sax->endElement = xmlTextReaderEndElement;
|
||||||
ret->characters = ret->sax->characters;
|
ret->characters = ret->sax->characters;
|
||||||
ret->sax->characters = xmlTextReaderCharacters;
|
ret->sax->characters = xmlTextReaderCharacters;
|
||||||
|
ret->sax->ignorableWhitespace = xmlTextReaderCharacters;
|
||||||
ret->cdataBlock = ret->sax->cdataBlock;
|
ret->cdataBlock = ret->sax->cdataBlock;
|
||||||
ret->sax->cdataBlock = xmlTextReaderCDataBlock;
|
ret->sax->cdataBlock = xmlTextReaderCDataBlock;
|
||||||
|
|
||||||
@ -1152,6 +1153,10 @@ xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
|
|||||||
ret->ctxt->_private = ret;
|
ret->ctxt->_private = ret;
|
||||||
ret->ctxt->linenumbers = 1;
|
ret->ctxt->linenumbers = 1;
|
||||||
ret->allocs = XML_TEXTREADER_CTXT;
|
ret->allocs = XML_TEXTREADER_CTXT;
|
||||||
|
/*
|
||||||
|
* use the parser dictionnary to allocate all elements and attributes names
|
||||||
|
*/
|
||||||
|
ret->ctxt->docdict = 1;
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user