Lines Matching defs:ctxt
55 * @ctxt: an XML validation parser context
59 xmlSAX2ErrMemory(xmlParserCtxtPtr ctxt, const char *msg) {
60 if (ctxt != NULL) {
61 if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
62 ctxt->sax->error(ctxt->userData, "%s: out of memory\n", msg);
63 ctxt->errNo = XML_ERR_NO_MEMORY;
64 ctxt->instate = XML_PARSER_EOF;
65 ctxt->disableSAX = 1;
71 * @ctxt: an XML validation parser context
80 xmlErrValid(xmlParserCtxtPtr ctxt, xmlParserErrors error,
85 if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
86 (ctxt->instate == XML_PARSER_EOF))
88 if (ctxt != NULL) {
89 ctxt->errNo = error;
90 if ((ctxt->sax != NULL) && (ctxt->sax->initialized == XML_SAX2_MAGIC))
91 schannel = ctxt->sax->serror;
93 ctxt->vctxt.error, ctxt->vctxt.userData,
94 ctxt, NULL, XML_FROM_DTD, error,
98 ctxt->valid = 0;
102 ctxt, NULL, XML_FROM_DTD, error,
111 * @ctxt: an XML parser context
120 xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
123 if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
124 (ctxt->instate == XML_PARSER_EOF))
126 if (ctxt != NULL)
127 ctxt->errNo = error;
128 __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
132 if (ctxt != NULL) {
133 ctxt->wellFormed = 0;
134 ctxt->valid = 0;
135 if (ctxt->recovery == 0)
136 ctxt->disableSAX = 1;
142 * @ctxt: an XML parser context
151 xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
154 if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
155 (ctxt->instate == XML_PARSER_EOF))
157 if (ctxt != NULL)
158 ctxt->errNo = error;
159 __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
167 * @ctxt: an XML parser context
176 xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
179 if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
180 (ctxt->instate == XML_PARSER_EOF))
182 if (ctxt != NULL)
183 ctxt->errNo = error;
184 __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error,
192 * @ctxt: an XML parser context
200 xmlNsWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
203 if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
204 (ctxt->instate == XML_PARSER_EOF))
206 if (ctxt != NULL)
207 ctxt->errNo = error;
208 __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error,
225 /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
241 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
242 if ((ctx == NULL) || (ctxt->input == NULL)) return(NULL);
243 return((const xmlChar *) ctxt->input->filename);
257 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
258 if ((ctx == NULL) || (ctxt->input == NULL)) return(0);
259 return(ctxt->input->line);
273 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
274 if ((ctx == NULL) || (ctxt->input == NULL)) return(0);
275 return(ctxt->input->col);
289 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
290 if ((ctx == NULL) || (ctxt->myDoc == NULL)) return(0);
291 return(ctxt->myDoc->standalone == 1);
305 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
306 if ((ctxt == NULL) || (ctxt->myDoc == NULL)) return(0);
307 return(ctxt->myDoc->intSubset != NULL);
321 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
322 if ((ctxt == NULL) || (ctxt->myDoc == NULL)) return(0);
323 return(ctxt->myDoc->extSubset != NULL);
339 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
348 if (ctxt->myDoc == NULL)
350 dtd = xmlGetIntSubset(ctxt->myDoc);
352 if (ctxt->html)
356 ctxt->myDoc->intSubset = NULL;
358 ctxt->myDoc->intSubset =
359 xmlCreateIntSubset(ctxt->myDoc, name, ExternalID, SystemID);
360 if (ctxt->myDoc->intSubset == NULL)
361 xmlSAX2ErrMemory(ctxt, "xmlSAX2InternalSubset");
377 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
385 (((ctxt->validate) || (ctxt->loadsubset != 0)) &&
386 (ctxt->wellFormed && ctxt->myDoc))) {
401 if ((ctxt->sax != NULL) && (ctxt->sax->resolveEntity != NULL))
402 input = ctxt->sax->resolveEntity(ctxt->userData, ExternalID,
408 xmlNewDtd(ctxt->myDoc, name, ExternalID, SystemID);
413 oldinput = ctxt->input;
414 oldinputNr = ctxt->inputNr;
415 oldinputMax = ctxt->inputMax;
416 oldinputTab = ctxt->inputTab;
417 oldcharset = ctxt->charset;
419 ctxt->inputTab = (xmlParserInputPtr *)
421 if (ctxt->inputTab == NULL) {
422 xmlSAX2ErrMemory(ctxt, "xmlSAX2ExternalSubset");
423 ctxt->input = oldinput;
424 ctxt->inputNr = oldinputNr;
425 ctxt->inputMax = oldinputMax;
426 ctxt->inputTab = oldinputTab;
427 ctxt->charset = oldcharset;
430 ctxt->inputNr = 0;
431 ctxt->inputMax = 5;
432 ctxt->input = NULL;
433 xmlPushInput(ctxt, input);
438 if (ctxt->input->length >= 4) {
439 enc = xmlDetectCharEncoding(ctxt->input->cur, 4);
440 xmlSwitchEncoding(ctxt, enc);
447 input->base = ctxt->input->cur;
448 input->cur = ctxt->input->cur;
454 xmlParseExternalSubset(ctxt, ExternalID, SystemID);
460 while (ctxt->inputNr > 1)
461 xmlPopInput(ctxt);
462 xmlFreeInputStream(ctxt->input);
463 xmlFree(ctxt->inputTab);
468 ctxt->input = oldinput;
469 ctxt->inputNr = oldinputNr;
470 ctxt->inputMax = oldinputMax;
471 ctxt->inputTab = oldinputTab;
472 ctxt->charset = oldcharset;
473 /* ctxt->wellFormed = oldwellFormed; */
494 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
500 if (ctxt->input != NULL)
501 base = ctxt->input->filename;
503 base = ctxt->directory;
513 (const char *) publicId, ctxt);
531 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
540 if (ctxt->inSubset == 0) {
545 if ((ctxt->myDoc != NULL) && (ctxt->myDoc->standalone == 1)) {
546 if (ctxt->inSubset == 2) {
547 ctxt->myDoc->standalone = 0;
548 ret = xmlGetDocEntity(ctxt->myDoc, name);
549 ctxt->myDoc->standalone = 1;
551 ret = xmlGetDocEntity(ctxt->myDoc, name);
553 ctxt->myDoc->standalone = 0;
554 ret = xmlGetDocEntity(ctxt->myDoc, name);
556 xmlFatalErrMsg(ctxt, XML_ERR_NOT_STANDALONE,
560 ctxt->myDoc->standalone = 1;
564 ret = xmlGetDocEntity(ctxt->myDoc, name);
567 ((ctxt->validate) || (ctxt->replaceEntities)) &&
578 val = xmlParseCtxtExternalEntity(ctxt, ret->URI,
583 xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_PROCESSING,
585 ctxt->validate = 0;
607 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
616 ret = xmlGetParameterEntity(ctxt->myDoc, name);
637 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
645 if (ctxt->inSubset == 1) {
646 ent = xmlAddDocEntity(ctxt->myDoc, name, type, publicId,
648 if ((ent == NULL) && (ctxt->pedantic))
649 xmlWarnMsg(ctxt, XML_WAR_ENTITY_REDEFINED,
656 if (ctxt->input != NULL)
657 base = ctxt->input->filename;
659 base = ctxt->directory;
664 } else if (ctxt->inSubset == 2) {
665 ent = xmlAddDtdEntity(ctxt->myDoc, name, type, publicId,
667 if ((ent == NULL) && (ctxt->pedantic) &&
668 (ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
669 ctxt->sax->warning(ctxt->userData,
675 if (ctxt->input != NULL)
676 base = ctxt->input->filename;
678 base = ctxt->directory;
684 xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_PROCESSING,
707 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
711 if ((ctxt == NULL) || (ctxt->myDoc == NULL))
724 int tmp = ctxt->valid;
725 xmlErrValid(ctxt, XML_DTD_XMLID_TYPE,
727 ctxt->valid = tmp;
730 name = xmlSplitQName(ctxt, fullname, &prefix);
731 ctxt->vctxt.valid = 1;
732 if (ctxt->inSubset == 1)
733 attr = xmlAddAttributeDecl(&ctxt->vctxt, ctxt->myDoc->intSubset, elem,
736 else if (ctxt->inSubset == 2)
737 attr = xmlAddAttributeDecl(&ctxt->vctxt, ctxt->myDoc->extSubset, elem,
741 xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR,
748 if (ctxt->vctxt.valid == 0)
749 ctxt->valid = 0;
750 if ((attr != NULL) && (ctxt->validate) && (ctxt->wellFormed) &&
751 (ctxt->myDoc->intSubset != NULL))
752 ctxt->valid &= xmlValidateAttributeDecl(&ctxt->vctxt, ctxt->myDoc,
774 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
777 if ((ctxt == NULL) || (ctxt->myDoc == NULL))
785 if (ctxt->inSubset == 1)
786 elem = xmlAddElementDecl(&ctxt->vctxt, ctxt->myDoc->intSubset,
788 else if (ctxt->inSubset == 2)
789 elem = xmlAddElementDecl(&ctxt->vctxt, ctxt->myDoc->extSubset,
792 xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR,
799 ctxt->valid = 0;
800 if (ctxt->validate && ctxt->wellFormed &&
801 ctxt->myDoc && ctxt->myDoc->intSubset)
802 ctxt->valid &=
803 xmlValidateElementDecl(&ctxt->vctxt, ctxt->myDoc, elem);
820 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
823 if ((ctxt == NULL) || (ctxt->myDoc == NULL))
832 xmlFatalErrMsg(ctxt, XML_ERR_NOTATION_PROCESSING,
836 } else if (ctxt->inSubset == 1)
837 nota = xmlAddNotationDecl(&ctxt->vctxt, ctxt->myDoc->intSubset, name,
839 else if (ctxt->inSubset == 2)
840 nota = xmlAddNotationDecl(&ctxt->vctxt, ctxt->myDoc->extSubset, name,
843 xmlFatalErrMsg(ctxt, XML_ERR_NOTATION_PROCESSING,
849 if (nota == NULL) ctxt->valid = 0;
850 if ((ctxt->validate) && (ctxt->wellFormed) &&
851 (ctxt->myDoc->intSubset != NULL))
852 ctxt->valid &= xmlValidateNotationDecl(&ctxt->vctxt, ctxt->myDoc,
873 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
880 if (ctxt->inSubset == 1) {
881 ent = xmlAddDocEntity(ctxt->myDoc, name,
884 if ((ent == NULL) && (ctxt->pedantic) &&
885 (ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
886 ctxt->sax->warning(ctxt->userData,
892 if (ctxt->input != NULL)
893 base = ctxt->input->filename;
895 base = ctxt->directory;
900 } else if (ctxt->inSubset == 2) {
901 ent = xmlAddDtdEntity(ctxt->myDoc, name,
904 if ((ent == NULL) && (ctxt->pedantic) &&
905 (ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
906 ctxt->sax->warning(ctxt->userData,
912 if (ctxt->input != NULL)
913 base = ctxt->input->filename;
915 base = ctxt->directory;
921 xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR,
938 /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
954 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
963 if (ctxt->html) {
965 if (ctxt->myDoc == NULL)
966 ctxt->myDoc = htmlNewDocNoDtD(NULL, NULL);
967 ctxt->myDoc->properties = XML_DOC_HTML;
968 ctxt->myDoc->parseFlags = ctxt->options;
969 if (ctxt->myDoc == NULL) {
970 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument");
976 ctxt->errNo = XML_ERR_INTERNAL_ERROR;
977 ctxt->instate = XML_PARSER_EOF;
978 ctxt->disableSAX = 1;
982 doc = ctxt->myDoc = xmlNewDoc(ctxt->version);
985 if (ctxt->options & XML_PARSE_OLD10)
987 doc->parseFlags = ctxt->options;
988 if (ctxt->encoding != NULL)
989 doc->encoding = xmlStrdup(ctxt->encoding);
992 doc->standalone = ctxt->standalone;
994 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument");
997 if ((ctxt->dictNames) && (doc != NULL)) {
998 doc->dict = ctxt->dict;
1002 if ((ctxt->myDoc != NULL) && (ctxt->myDoc->URL == NULL) &&
1003 (ctxt->input != NULL) && (ctxt->input->filename != NULL)) {
1004 ctxt->myDoc->URL = xmlPathToURI((const xmlChar *)ctxt->input->filename);
1005 if (ctxt->myDoc->URL == NULL)
1006 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument");
1019 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
1026 if (ctxt->validate && ctxt->wellFormed &&
1027 ctxt->myDoc && ctxt->myDoc->intSubset)
1028 ctxt->valid &= xmlValidateDocumentFinal(&ctxt->vctxt, ctxt->myDoc);
1034 if ((ctxt->encoding != NULL) && (ctxt->myDoc != NULL) &&
1035 (ctxt->myDoc->encoding == NULL)) {
1036 ctxt->myDoc->encoding = ctxt->encoding;
1037 ctxt->encoding = NULL;
1039 if ((ctxt->inputTab != NULL) &&
1040 (ctxt->inputNr > 0) && (ctxt->inputTab[0] != NULL) &&
1041 (ctxt->inputTab[0]->encoding != NULL) && (ctxt->myDoc != NULL) &&
1042 (ctxt->myDoc->encoding == NULL)) {
1043 ctxt->myDoc->encoding = xmlStrdup(ctxt->inputTab[0]->encoding);
1045 if ((ctxt->charset != XML_CHAR_ENCODING_NONE) && (ctxt->myDoc != NULL) &&
1046 (ctxt->myDoc->charset == XML_CHAR_ENCODING_NONE)) {
1047 ctxt->myDoc->charset = ctxt->charset;
1068 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
1075 if (ctxt->html) {
1083 name = xmlSplitQName(ctxt, fullname, &ns);
1086 xmlNsErrMsg(ctxt, XML_ERR_NS_DECL_ERROR,
1090 xmlNsWarnMsg(ctxt, XML_WAR_NS_COLUMN,
1102 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1109 if ((ctxt->html) &&
1122 ctxt->vctxt.valid = 1;
1123 nval = xmlValidCtxtNormalizeAttributeValue(&ctxt->vctxt,
1124 ctxt->myDoc, ctxt->node,
1126 if (ctxt->vctxt.valid != 1) {
1127 ctxt->valid = 0;
1139 if ((!ctxt->html) && (ns == NULL) &&
1145 if (!ctxt->replaceEntities) {
1146 ctxt->depth++;
1147 val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
1149 ctxt->depth--;
1159 if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
1160 ctxt->sax->warning(ctxt->userData,
1164 if ((ctxtctxt->sax->warning != NULL))
1165 ctxt->sax->warning(ctxt->userData,
1173 nsret = xmlNewNs(ctxt->node, val, NULL);
1180 if (nsret != NULL && ctxt->validate && ctxt->wellFormed &&
1181 ctxt->myDoc && ctxt->myDoc->intSubset)
1182 ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
1183 ctxt->node, prefix, nsret, val);
1193 if ((!ctxt->html) &&
1199 if (!ctxt->replaceEntities) {
1200 ctxt->depth++;
1201 val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
1203 ctxt->depth--;
1205 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1216 xmlNsErrMsg(ctxt, XML_NS_ERR_EMPTY,
1219 if ((ctxt->pedantic != 0) && (val[0] != 0)) {
1224 xmlNsWarnMsg(ctxt, XML_WAR_NS_URI,
1228 xmlNsWarnMsg(ctxt, XML_WAR_NS_URI_RELATIVE,
1236 nsret = xmlNewNs(ctxt->node, val, name);
1243 if (nsret != NULL && ctxt->validate && ctxt->wellFormed &&
1244 ctxt->myDoc && ctxt->myDoc->intSubset)
1245 ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
1246 ctxt->node, prefix, nsret, value);
1258 namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, ns);
1261 xmlNsErrMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
1267 prop = ctxt->node->properties;
1273 xmlNsErrMsg(ctxt, XML_ERR_ATTRIBUTE_REDEFINED,
1276 ctxt->wellFormed = 0;
1277 if (ctxt->recovery == 0) ctxt->disableSAX = 1;
1289 ret = xmlNewNsPropEatName(ctxt->node, namespace, name, NULL);
1292 if ((ctxt->replaceEntities == 0) && (!ctxt->html)) {
1295 ret->children = xmlStringGetNodeList(ctxt->myDoc, value);
1304 ret->children = xmlNewDocText(ctxt->myDoc, value);
1312 if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
1313 ctxt->myDoc && ctxt->myDoc->intSubset) {
1319 if (!ctxt->replaceEntities) {
1322 ctxt->depth++;
1323 val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
1325 ctxt->depth--;
1328 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
1329 ctxt->myDoc, ctxt->node, ret, value);
1338 nvalnorm = xmlValidNormalizeAttributeValue(ctxt->myDoc,
1339 ctxt->node, fullname, val);
1345 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
1346 ctxt->myDoc, ctxt->node, ret, val);
1350 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, ctxt->myDoc,
1351 ctxt->node, ret, value);
1355 if (((ctxt->loadsubset & XML_SKIP_IDS) == 0) &&
1356 (((ctxt->replaceEntities == 0) && (ctxt->external != 2)) ||
1357 ((ctxt->replaceEntities != 0) && (ctxt->inSubset == 0)))) {
1369 xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
1373 xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret);
1374 } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret))
1375 xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret);
1376 else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret))
1377 xmlAddRef(&ctxt->vctxt, ctxt->myDoc, value, ret);
1393 xmlCheckDefaultedAttributes(xmlParserCtxtPtr ctxt, const xmlChar *name,
1400 elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->intSubset, name, prefix);
1402 elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->extSubset, name, prefix);
1414 if ((ctxt->myDoc->standalone == 1) &&
1415 (ctxt->myDoc->extSubset != NULL) &&
1416 (ctxt->validate)) {
1419 (xmlGetDtdQAttrDesc(ctxt->myDoc->extSubset,
1422 (xmlGetDtdQAttrDesc(ctxt->myDoc->intSubset,
1435 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1455 xmlErrValid(ctxt, XML_DTD_STANDALONE_DEFAULTED,
1489 (ctxt->loadsubset & XML_COMPLETE_ATTRS)) {
1492 tst = xmlGetDtdQAttrDesc(ctxt->myDoc->intSubset,
1501 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1521 xmlSAX2AttributeInternal(ctxt, fulln,
1532 elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->extSubset,
1551 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
1561 if ((ctx == NULL) || (fullname == NULL) || (ctxt->myDoc == NULL)) return;
1562 parent = ctxt->node;
1571 if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
1572 ((ctxt->myDoc->intSubset == NULL) ||
1573 ((ctxt->myDoc->intSubset->notations == NULL) &&
1574 (ctxt->myDoc->intSubset->elements == NULL) &&
1575 (ctxt->myDoc->intSubset->attributes == NULL) &&
1576 (ctxt->myDoc->intSubset->entities == NULL)))) {
1577 xmlErrValid(ctxt, XML_ERR_NO_DTD,
1579 ctxt->validate = 0;
1586 name = xmlSplitQName(ctxt, fullname, &prefix);
1594 ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL, name, NULL);
1598 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1601 if (ctxt->myDoc->children == NULL) {
1605 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
1607 parent = ctxt->myDoc->children;
1609 ctxt->nodemem = -1;
1610 if (ctxt->linenumbers) {
1611 if (ctxt->input != NULL) {
1612 if (ctxt->input->line < 65535)
1613 ret->line = (short) ctxt->input->line;
1625 nodePush(ctxt, ret);
1650 if ((!ctxt->html) &&
1651 ((ctxt->myDoc->intSubset != NULL) ||
1652 (ctxt->myDoc->extSubset != NULL))) {
1653 xmlCheckDefaultedAttributes(ctxt, name, prefix, atts);
1663 if (!ctxt->html) {
1667 xmlSAX2AttributeInternal(ctxt, att, value, prefix);
1679 ns = xmlSearchNs(ctxt->myDoc, ret, prefix);
1681 ns = xmlSearchNs(ctxt->myDoc, parent, prefix);
1684 xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
1704 if (ctxt->html) {
1706 xmlSAX2AttributeInternal(ctxt, att, value, NULL);
1714 xmlSAX2AttributeInternal(ctxt, att, value, NULL);
1730 if ((ctxt->validate) && (ctxt->vctxt.finishDtd == XML_CTXT_FINISH_DTD_0)) {
1733 chk = xmlValidateDtdFinal(&ctxt->vctxt, ctxt->myDoc);
1735 ctxt->valid = 0;
1737 ctxt->wellFormed = 0;
1738 ctxt->valid &= xmlValidateRoot(&ctxt->vctxt, ctxt->myDoc);
1739 ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_1;
1758 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
1763 cur = ctxt->node;
1772 if (cur != NULL && ctxt->record_info) {
1773 node_info.end_pos = ctxt->input->cur - ctxt->input->base;
1774 node_info.end_line = ctxt->input->line;
1776 xmlParserAddNodeInfo(ctxt, &node_info);
1778 ctxt->nodemem = -1;
1781 if (ctxt->validate && ctxt->wellFormed &&
1782 ctxt->myDoc && ctxt->myDoc->intSubset)
1783 ctxt->valid &= xmlValidateOneElement(&ctxt->vctxt, ctxt->myDoc,
1794 nodePop(ctxt);
1800 * @ctxt: the parser context
1809 xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) {
1816 if (ctxt->freeElems != NULL) {
1817 ret = ctxt->freeElems;
1818 ctxt->freeElems = ret->next;
1819 ctxt->freeElemsNr--;
1824 xmlErrMemory(ctxt, "xmlSAX2Characters");
1832 if (ctxt->dictNames) {
1836 (ctxt->options & XML_PARSE_COMPACT)) {
1844 intern = xmlDictLookup(ctxt->dict, str, len);
1852 intern = xmlDictLookup(ctxt->dict, str, len);
1862 xmlSAX2ErrMemory(ctxt, "xmlSAX2TextNode");
1869 if (ctxt->input != NULL)
1870 ret->line = ctxt->input->line;
1880 * @ctxt: the parser context
1889 xmlSAX2DecodeAttrEntities(xmlParserCtxtPtr ctxt, const xmlChar *str,
1900 ctxt->depth++;
1901 ret = xmlStringLenDecodeEntities(ctxt, str, end - str,
1903 ctxt->depth--;
1923 xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
1937 namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, prefix);
1942 if (ctxt->freeAttrs != NULL) {
1943 ret = ctxt->freeAttrs;
1944 ctxt->freeAttrs = ret->next;
1945 ctxt->freeAttrsNr--;
1949 ret->parent = ctxt->node;
1950 ret->doc = ctxt->myDoc;
1953 if (ctxt->dictNames)
1959 if (ctxt->node->properties == NULL) {
1960 ctxt->node->properties = ret;
1962 xmlAttrPtr prev = ctxt->node->properties;
1972 if (ctxt->dictNames)
1973 ret = xmlNewNsPropEatName(ctxt->node, namespace,
1976 ret = xmlNewNsProp(ctxt->node, namespace, localname, NULL);
1978 xmlErrMemory(ctxt, "xmlSAX2AttributeNs");
1983 if ((ctxt->replaceEntities == 0) && (!ctxt->html)) {
1992 tmp = xmlSAX2TextNode(ctxt, value, valueend - value);
2000 ret->children = xmlStringLenGetNodeList(ctxt->myDoc, value,
2014 tmp = xmlSAX2TextNode(ctxt, value, valueend - value);
2024 if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
2025 ctxt->myDoc && ctxt->myDoc->intSubset) {
2030 if (!ctxt->replaceEntities) {
2031 dup = xmlSAX2DecodeAttrEntities(ctxt, value, valueend);
2034 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2035 ctxt->myDoc, ctxt->node, ret, value);
2044 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2045 ctxt->myDoc, ctxt->node, ret, dup);
2055 if (ctxt->attsSpecial != NULL) {
2062 ctxt->vctxt.valid = 1;
2064 &ctxt->vctxt, ctxt->myDoc,
2065 ctxt->node, fullname, dup);
2066 if (ctxt->vctxt.valid != 1)
2067 ctxt->valid = 0;
2078 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2079 ctxt->myDoc, ctxt->node, ret, dup);
2088 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2089 ctxt->myDoc, ctxt->node, ret, dup);
2093 if (((ctxt->loadsubset & XML_SKIP_IDS) == 0) &&
2094 (((ctxt->replaceEntities == 0) && (ctxt->external != 2)) ||
2095 ((ctxt->replaceEntities != 0) && (ctxt->inSubset == 0)))) {
2100 if ((prefix == ctxt->str_xml) &&
2112 xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
2117 xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret);
2118 } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) {
2122 xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret);
2123 } else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) {
2126 xmlAddRef(&ctxt->vctxt, ctxt->myDoc, dup, ret);
2161 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2170 parent = ctxt->node;
2174 if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
2175 ((ctxt->myDoc->intSubset == NULL) ||
2176 ((ctxt->myDoc->intSubset->notations == NULL) &&
2177 (ctxt->myDoc->intSubset->elements == NULL) &&
2178 (ctxt->myDoc->intSubset->attributes == NULL) &&
2179 (ctxt->myDoc->intSubset->entities == NULL)))) {
2180 xmlErrValid(ctxt, XML_ERR_NO_DTD,
2182 ctxt->validate = 0;
2189 if (ctxt->dictNames) {
2192 fullname = xmlDictQLookup(ctxt->dict, prefix, localname);
2202 if (ctxt->freeElems != NULL) {
2203 ret = ctxt->freeElems;
2204 ctxt->freeElems = ret->next;
2205 ctxt->freeElemsNr--;
2209 if (ctxt->dictNames)
2217 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2224 if (ctxt->dictNames)
2225 ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL,
2228 ret = xmlNewDocNode(ctxt->myDoc, NULL, localname, NULL);
2230 ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL,
2233 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2237 if (ctxt->linenumbers) {
2238 if (ctxt->input != NULL) {
2239 if (ctxt->input->line < 65535)
2240 ret->line = (short) ctxt->input->line;
2246 if ((ctxt->myDoc->children == NULL) || (parent == NULL)) {
2247 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
2274 if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
2275 ctxt->myDoc && ctxt->myDoc->intSubset) {
2276 ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
2281 ctxt->nodemem = -1;
2286 nodePush(ctxt, ret);
2303 ((ctxt->loadsubset & XML_COMPLETE_ATTRS) == 0))
2311 ret->ns = xmlSearchNs(ctxt->myDoc, parent, prefix);
2313 ret->ns = xmlSearchNs(ctxt->myDoc, ret, prefix);
2319 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2323 xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
2327 xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
2342 if (ctxt->dictNames) {
2345 fullname = xmlDictQLookup(ctxt->dict, attributes[j+1],
2348 xmlSAX2AttributeNs(ctxt, fullname, NULL,
2356 xmlSAX2AttributeNs(ctxt, lname, NULL,
2363 xmlSAX2AttributeNs(ctxt, attributes[j], attributes[j+1],
2373 if ((ctxt->validate) && (ctxt->vctxt.finishDtd == XML_CTXT_FINISH_DTD_0)) {
2376 chk = xmlValidateDtdFinal(&ctxt->vctxt, ctxt->myDoc);
2378 ctxt->valid = 0;
2380 ctxt->wellFormed = 0;
2381 ctxt->valid &= xmlValidateRoot(&ctxt->vctxt, ctxt->myDoc);
2382 ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_1;
2403 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2408 cur = ctxt->node;
2410 if ((ctxt->record_info) && (cur != NULL)) {
2411 node_info.end_pos = ctxt->input->cur - ctxt->input->base;
2412 node_info.end_line = ctxt->input->line;
2414 xmlParserAddNodeInfo(ctxt, &node_info);
2416 ctxt->nodemem = -1;
2419 if (ctxt->validate && ctxt->wellFormed &&
2420 ctxt->myDoc && ctxt->myDoc->intSubset)
2421 ctxt->valid &= xmlValidateOneElement(&ctxt->vctxt, ctxt->myDoc, cur);
2427 nodePop(ctxt);
2440 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2449 ret = xmlNewCharRef(ctxt->myDoc, name);
2451 ret = xmlNewReference(ctxt->myDoc, name);
2454 "add xmlSAX2Reference %s to %s \n", name, ctxt->node->name);
2456 if (xmlAddChild(ctxt->node, ret) == NULL) {
2472 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2486 if (ctxt->node == NULL) {
2489 "add chars: ctxt->node == NULL !\n");
2493 lastChild = ctxt->node->last;
2496 "add chars to %s \n", ctxt->node->name);
2504 lastChild = xmlSAX2TextNode(ctxt, ch, len);
2506 ctxt->node->children = lastChild;
2507 ctxt->node->last = lastChild;
2508 lastChild->parent = ctxt->node;
2509 lastChild->doc = ctxt->node->doc;
2510 ctxt->nodelen = len;
2511 ctxt->nodemem = len + 1;
2513 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters");
2520 if ((coalesceText) && (ctxt->nodemem != 0)) {
2531 } else if ((ctxt->nodemem == ctxt->nodelen + 1) &&
2532 (xmlDictOwns(ctxt->dict, lastChild->content))) {
2535 if (((size_t)ctxt->nodelen + (size_t)len > XML_MAX_TEXT_LENGTH) &&
2536 ((ctxt->options & XML_PARSE_HUGE) == 0)) {
2537 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: huge text node");
2540 if ((size_t)ctxt->nodelen > SIZE_T_MAX - (size_t)len ||
2541 (size_t)ctxt->nodemem + (size_t)len > SIZE_T_MAX / 2) {
2542 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters overflow prevented");
2545 if (ctxt->nodelen + len >= ctxt->nodemem) {
2549 size = ctxt->nodemem + len;
2553 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters");
2556 ctxt->nodemem = size;
2559 memcpy(&lastChild->content[ctxt->nodelen], ch, len);
2560 ctxt->nodelen += len;
2561 lastChild->content[ctxt->nodelen] = 0;
2564 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters");
2566 if (ctxt->node->children != NULL) {
2567 ctxt->nodelen = xmlStrlen(lastChild->content);
2568 ctxt->nodemem = ctxt->nodelen + 1;
2572 lastChild = xmlSAX2TextNode(ctxt, ch, len);
2574 xmlAddChild(ctxt->node, lastChild);
2575 if (ctxt->node->children != NULL) {
2576 ctxt->nodelen = len;
2577 ctxt->nodemem = len + 1;
2596 /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
2615 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2620 parent = ctxt->node;
2626 ret = xmlNewDocPI(ctxt->myDoc, target, data);
2629 if (ctxt->linenumbers) {
2630 if (ctxt->input != NULL) {
2631 if (ctxt->input->line < 65535)
2632 ret->line = (short) ctxt->input->line;
2637 if (ctxt->inSubset == 1) {
2638 xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret);
2640 } else if (ctxt->inSubset == 2) {
2641 xmlAddChild((xmlNodePtr) ctxt->myDoc->extSubset, ret);
2644 if ((ctxt->myDoc->children == NULL) || (parent == NULL)) {
2649 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
2678 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2683 parent = ctxt->node;
2687 ret = xmlNewDocComment(ctxt->myDoc, value);
2689 if (ctxt->linenumbers) {
2690 if (ctxt->input != NULL) {
2691 if (ctxt->input->line < 65535)
2692 ret->line = (short) ctxt->input->line;
2698 if (ctxt->inSubset == 1) {
2699 xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret);
2701 } else if (ctxt->inSubset == 2) {
2702 xmlAddChild((xmlNodePtr) ctxt->myDoc->extSubset, ret);
2705 if ((ctxt->myDoc->children == NULL) || (parent == NULL)) {
2710 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
2740 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2748 lastChild = xmlGetLastChild(ctxt->node);
2751 "add chars to %s \n", ctxt->node->name);
2757 ret = xmlNewCDataBlock(ctxt->myDoc, value, len);
2758 xmlAddChild(ctxt->node, ret);