Home | History | Annotate | Download | only in libxml2

Lines Matching refs: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");
1114 ctxt->vctxt.valid = 1;
1115 nval = xmlValidCtxtNormalizeAttributeValue(&ctxt->vctxt,
1116 ctxt->myDoc, ctxt->node,
1118 if (ctxt->vctxt.valid != 1) {
1119 ctxt->valid = 0;
1130 if ((!ctxt->html) && (ns == NULL) &&
1136 if (!ctxt->replaceEntities) {
1137 ctxt->depth++;
1138 val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
1140 ctxt->depth--;
1150 if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
1151 ctxt->sax->warning(ctxt->userData,
1155 if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
1156 ctxt->sax->warning(ctxt->userData,
1164 nsret = xmlNewNs(ctxt->node, val, NULL);
1171 if (nsret != NULL && ctxt->validate && ctxt->wellFormed &&
1172 ctxt->myDoc && ctxt->myDoc->intSubset)
1173 ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
1174 ctxt->node, prefix, nsret, val);
1184 if ((!ctxt->html) &&
1190 if (!ctxt->replaceEntities) {
1191 ctxt->depth++;
1192 val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
1194 ctxt->depth--;
1196 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1207 xmlNsErrMsg(ctxt, XML_NS_ERR_EMPTY,
1210 if ((ctxt->pedantic != 0) && (val[0] != 0)) {
1215 xmlNsWarnMsg(ctxt, XML_WAR_NS_URI,
1219 xmlNsWarnMsg(ctxt, XML_WAR_NS_URI_RELATIVE,
1227 nsret = xmlNewNs(ctxt->node, val, name);
1234 if (nsret != NULL && ctxt->validate && ctxt->wellFormed &&
1235 ctxt->myDoc && ctxt->myDoc->intSubset)
1236 ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
1237 ctxt->node, prefix, nsret, value);
1250 namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, ns);
1252 xmlNsErrMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
1257 prop = ctxt->node->properties;
1263 xmlNsErrMsg(ctxt, XML_ERR_ATTRIBUTE_REDEFINED,
1266 ctxt->wellFormed = 0;
1267 if (ctxt->recovery == 0) ctxt->disableSAX = 1;
1278 ret = xmlNewNsPropEatName(ctxt->node, namespace, name, NULL);
1281 if ((ctxt->replaceEntities == 0) && (!ctxt->html)) {
1284 ret->children = xmlStringGetNodeList(ctxt->myDoc, value);
1293 ret->children = xmlNewDocText(ctxt->myDoc, value);
1301 if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
1302 ctxt->myDoc && ctxt->myDoc->intSubset) {
1308 if (!ctxt->replaceEntities) {
1311 ctxt->depth++;
1312 val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
1314 ctxt->depth--;
1317 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
1318 ctxt->myDoc, ctxt->node, ret, value);
1327 nvalnorm = xmlValidNormalizeAttributeValue(ctxt->myDoc,
1328 ctxt->node, fullname, val);
1334 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
1335 ctxt->myDoc, ctxt->node, ret, val);
1339 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, ctxt->myDoc,
1340 ctxt->node, ret, value);
1344 if (((ctxt->loadsubset & XML_SKIP_IDS) == 0) &&
1345 (((ctxt->replaceEntities == 0) && (ctxt->external != 2)) ||
1346 ((ctxt->replaceEntities != 0) && (ctxt->inSubset == 0)))) {
1358 xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
1362 xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret);
1363 } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret))
1364 xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret);
1365 else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret))
1366 xmlAddRef(&ctxt->vctxt, ctxt->myDoc, value, ret);
1382 xmlCheckDefaultedAttributes(xmlParserCtxtPtr ctxt, const xmlChar *name,
1389 elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->intSubset, name, prefix);
1391 elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->extSubset, name, prefix);
1403 if ((ctxt->myDoc->standalone == 1) &&
1404 (ctxt->myDoc->extSubset != NULL) &&
1405 (ctxt->validate)) {
1408 (xmlGetDtdQAttrDesc(ctxt->myDoc->extSubset,
1411 (xmlGetDtdQAttrDesc(ctxt->myDoc->intSubset,
1440 xmlErrValid(ctxt, XML_DTD_STANDALONE_DEFAULTED,
1473 (ctxt->loadsubset & XML_COMPLETE_ATTRS)) {
1476 tst = xmlGetDtdQAttrDesc(ctxt->myDoc->intSubset,
1485 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1505 xmlSAX2AttributeInternal(ctxt, fulln,
1516 elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->extSubset,
1535 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
1545 if ((ctx == NULL) || (fullname == NULL) || (ctxt->myDoc == NULL)) return;
1546 parent = ctxt->node;
1555 if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
1556 ((ctxt->myDoc->intSubset == NULL) ||
1557 ((ctxt->myDoc->intSubset->notations == NULL) &&
1558 (ctxt->myDoc->intSubset->elements == NULL) &&
1559 (ctxt->myDoc->intSubset->attributes == NULL) &&
1560 (ctxt->myDoc->intSubset->entities == NULL)))) {
1561 xmlErrValid(ctxt, XML_ERR_NO_DTD,
1563 ctxt->validate = 0;
1570 name = xmlSplitQName(ctxt, fullname, &prefix);
1578 ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL, name, NULL);
1582 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1585 if (ctxt->myDoc->children == NULL) {
1589 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
1591 parent = ctxt->myDoc->children;
1593 ctxt->nodemem = -1;
1594 if (ctxt->linenumbers) {
1595 if (ctxt->input != NULL) {
1596 if (ctxt->input->line < 65535)
1597 ret->line = (short) ctxt->input->line;
1609 nodePush(ctxt, ret);
1634 if ((!ctxt->html) &&
1635 ((ctxt->myDoc->intSubset != NULL) ||
1636 (ctxt->myDoc->extSubset != NULL))) {
1637 xmlCheckDefaultedAttributes(ctxt, name, prefix, atts);
1647 if (!ctxt->html) {
1651 xmlSAX2AttributeInternal(ctxt, att, value, prefix);
1663 ns = xmlSearchNs(ctxt->myDoc, ret, prefix);
1665 ns = xmlSearchNs(ctxt->myDoc, parent, prefix);
1668 xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
1688 if (ctxt->html) {
1690 xmlSAX2AttributeInternal(ctxt, att, value, NULL);
1698 xmlSAX2AttributeInternal(ctxt, att, value, NULL);
1714 if ((ctxt->validate) && (ctxt->vctxt.finishDtd == XML_CTXT_FINISH_DTD_0)) {
1717 chk = xmlValidateDtdFinal(&ctxt->vctxt, ctxt->myDoc);
1719 ctxt->valid = 0;
1721 ctxt->wellFormed = 0;
1722 ctxt->valid &= xmlValidateRoot(&ctxt->vctxt, ctxt->myDoc);
1723 ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_1;
1742 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
1747 cur = ctxt->node;
1756 if (cur != NULL && ctxt->record_info) {
1757 node_info.end_pos = ctxt->input->cur - ctxt->input->base;
1758 node_info.end_line = ctxt->input->line;
1760 xmlParserAddNodeInfo(ctxt, &node_info);
1762 ctxt->nodemem = -1;
1765 if (ctxt->validate && ctxt->wellFormed &&
1766 ctxt->myDoc && ctxt->myDoc->intSubset)
1767 ctxtctxt->vctxt, ctxt->myDoc,
1778 nodePop(ctxt);
1784 * @ctxt: the parser context
1793 xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) {
1800 if (ctxt->freeElems != NULL) {
1801 ret = ctxt->freeElems;
1802 ctxt->freeElems = ret->next;
1803 ctxt->freeElemsNr--;
1808 xmlErrMemory(ctxt, "xmlSAX2Characters");
1816 if (ctxt->dictNames) {
1820 (ctxt->options & XML_PARSE_COMPACT)) {
1828 intern = xmlDictLookup(ctxt->dict, str, len);
1836 intern = xmlDictLookup(ctxt->dict, str, len);
1846 xmlSAX2ErrMemory(ctxt, "xmlSAX2TextNode");
1853 if (ctxt->input != NULL)
1854 ret->line = ctxt->input->line;
1864 * @ctxt: the parser context
1873 xmlSAX2DecodeAttrEntities(xmlParserCtxtPtr ctxt, const xmlChar *str,
1884 ctxt->depth++;
1885 ret = xmlStringLenDecodeEntities(ctxt, str, end - str,
1887 ctxt->depth--;
1907 xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
1921 namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, prefix);
1926 if (ctxt->freeAttrs != NULL) {
1927 ret = ctxt->freeAttrs;
1928 ctxt->freeAttrs = ret->next;
1929 ctxt->freeAttrsNr--;
1933 ret->parent = ctxt->node;
1934 ret->doc = ctxt->myDoc;
1937 if (ctxt->dictNames)
1943 if (ctxt->node->properties == NULL) {
1944 ctxt->node->properties = ret;
1946 xmlAttrPtr prev = ctxt->node->properties;
1956 if (ctxt->dictNames)
1957 ret = xmlNewNsPropEatName(ctxt->node, namespace,
1960 ret = xmlNewNsProp(ctxt->node, namespace, localname, NULL);
1962 xmlErrMemory(ctxt, "xmlSAX2AttributeNs");
1967 if ((ctxt->replaceEntities == 0) && (!ctxt->html)) {
1976 tmp = xmlSAX2TextNode(ctxt, value, valueend - value);
1984 ret->children = xmlStringLenGetNodeList(ctxt->myDoc, value,
1998 tmp = xmlSAX2TextNode(ctxt, value, valueend - value);
2008 if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
2009 ctxt->myDoc && ctxt->myDoc->intSubset) {
2014 if (!ctxt->replaceEntities) {
2015 dup = xmlSAX2DecodeAttrEntities(ctxt, value, valueend);
2018 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2019 ctxt->myDoc, ctxt->node, ret, value);
2028 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2029 ctxt->myDoc, ctxt->node, ret, dup);
2039 if (ctxt->attsSpecial != NULL) {
2046 ctxt->vctxt.valid = 1;
2048 &ctxt->vctxt, ctxt->myDoc,
2049 ctxt->node, fullname, dup);
2050 if (ctxt->vctxt.valid != 1)
2051 ctxt->valid = 0;
2062 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2063 ctxt->myDoc, ctxt->node, ret, dup);
2072 ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
2073 ctxt->myDoc, ctxt->node, ret, dup);
2077 if (((ctxt->loadsubset & XML_SKIP_IDS) == 0) &&
2078 (((ctxt->replaceEntities == 0) && (ctxt->external != 2)) ||
2079 ((ctxt->replaceEntities != 0) && (ctxt->inSubset == 0)))) {
2084 if ((prefix == ctxt->str_xml) &&
2096 xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
2101 xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret);
2102 } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) {
2106 xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret);
2107 } else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) {
2110 xmlAddRef(&ctxt->vctxt, ctxt->myDoc, dup, ret);
2145 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2153 parent = ctxt->node;
2157 if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
2158 ((ctxt->myDoc->intSubset == NULL) ||
2159 ((ctxt->myDoc->intSubset->notations == NULL) &&
2160 (ctxt->myDoc->intSubset->elements == NULL) &&
2161 (ctxt->myDoc->intSubset->attributes == NULL) &&
2162 (ctxt->myDoc->intSubset->entities == NULL)))) {
2163 xmlErrValid(ctxt, XML_ERR_NO_DTD,
2165 ctxt->validate = 0;
2171 if (ctxt->freeElems != NULL) {
2172 ret = ctxt->freeElems;
2173 ctxt->freeElems = ret->next;
2174 ctxt->freeElemsNr--;
2178 if (ctxt->dictNames)
2183 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2190 if (ctxt->dictNames)
2191 ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL,
2194 ret = xmlNewDocNode(ctxt->myDoc, NULL, localname, NULL);
2196 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2200 if (ctxt->linenumbers) {
2201 if (ctxt->input != NULL) {
2202 if (ctxt->input->line < 65535)
2203 ret->line = (short) ctxt->input->line;
2209 if ((ctxt->myDoc->children == NULL) || (parent == NULL)) {
2210 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
2229 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2233 if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
2234 ctxt->myDoc && ctxt->myDoc->intSubset) {
2235 ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
2240 ctxt->nodemem = -1;
2245 nodePush(ctxt, ret);
2262 ((ctxt->loadsubset & XML_COMPLETE_ATTRS) == 0))
2270 ret->ns = xmlSearchNs(ctxt->myDoc, parent, prefix);
2272 ret->ns = xmlSearchNs(ctxt->myDoc, ret, prefix);
2278 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2281 xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
2292 xmlSAX2AttributeNs(ctxt, attributes[j], attributes[j+1],
2302 if ((ctxt->validate) && (ctxt->vctxt.finishDtd == XML_CTXT_FINISH_DTD_0)) {
2305 chk = xmlValidateDtdFinal(&ctxt->vctxt, ctxt->myDoc);
2307 ctxt->valid = 0;
2309 ctxt->wellFormed = 0;
2310 ctxt->valid &= xmlValidateRoot(&ctxt->vctxt, ctxt->myDoc);
2311 ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_1;
2332 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2337 cur = ctxt->node;
2339 if ((ctxt->record_info) && (cur != NULL)) {
2340 ctxt->input->cur - ctxt->input->base;
2341 node_info.end_line = ctxt->input->line;
2343 xmlParserAddNodeInfo(ctxt, &node_info);
2345 ctxt->nodemem = -1;
2348 if (ctxt->validate && ctxt->wellFormed &&
2349 ctxt->myDoc && ctxt->myDoc->intSubset)
2350 ctxt->valid &= xmlValidateOneElement(&ctxt->vctxt, ctxt->myDoc, cur);
2356 nodePop(ctxt);
2369 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2378 ret = xmlNewCharRef(ctxt->myDoc, name);
2380 ret = xmlNewReference(ctxt->myDoc, name);
2383 "add xmlSAX2Reference %s to %s \n", name, ctxt->node->name);
2385 if (xmlAddChild(ctxt->node, ret) == NULL) {
2401 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2415 if (ctxt->node == NULL) {
2418 "add chars: ctxt->node == NULL !\n");
2422 lastChild = ctxt->node->last;
2425 "add chars to %s \n", ctxt->node->name);
2433 lastChild = xmlSAX2TextNode(ctxt, ch, len);
2435 ctxt->node->children = lastChild;
2436 ctxt->node->last = lastChild;
2437 lastChild->parent = ctxt->node;
2438 lastChild->doc = ctxt->node->doc;
2439 ctxt->nodelen = len;
2440 ctxt->nodemem = len + 1;
2442 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters");
2449 if ((coalesceText) && (ctxt->nodemem != 0)) {
2460 } else if ((ctxt->nodemem == ctxt->nodelen + 1) &&
2461 (xmlDictOwns(ctxt->dict, lastChild->content))) {
2464 if (((size_t)ctxt->nodelen + (size_t)len > XML_MAX_TEXT_LENGTH) &&
2465 ((ctxt->options & XML_PARSE_HUGE) == 0)) {
2466 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: huge text node");
2469 if ((size_t)ctxt->nodelen > SIZE_T_MAX - (size_t)len ||
2470 (size_t)ctxt->nodemem + (size_t)len > SIZE_T_MAX / 2) {
2471 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters overflow prevented");
2474 if (ctxt->nodelen + len >= ctxt->nodemem) {
2478 size = ctxt->nodemem + len;
2482 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters");
2485 ctxt->nodemem = size;
2488 memcpy(&lastChild->content[ctxt->nodelen], ch, len);
2489 ctxt->nodelen += len;
2490 lastChild->content[ctxt->nodelen] = 0;
2493 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters");
2495 if (ctxt->node->children != NULL) {
2496 ctxt->nodelen = xmlStrlen(lastChild->content);
2497 ctxt->nodemem = ctxt->nodelen + 1;
2501 lastChild = xmlSAX2TextNode(ctxt, ch, len);
2503 xmlAddChild(ctxt->node, lastChild);
2504 if (ctxt->node->children != NULL) {
2505 ctxt->nodelen = len;
2506 ctxt->nodemem = len + 1;
2525 /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
2544 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2549 parent = ctxt->node;
2555 ret = xmlNewDocPI(ctxt->myDoc, target, data);
2557 parent = ctxt->node;
2559 if (ctxt->linenumbers) {
2560 if (ctxt->input != NULL) {
2561 if (ctxt->input->line < 65535)
2562 ret->line = (short) ctxt->input->line;
2567 if (ctxt->inSubset == 1) {
2568 xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret);
2570 } else if (ctxt->inSubset == 2) {
2571 xmlAddChild((xmlNodePtr) ctxt->myDoc->extSubset, ret);
2574 if ((ctxt->myDoc->children == NULL) || (parent == NULL)) {
2579 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
2608 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2613 parent = ctxt->node;
2617 ret = xmlNewDocComment(ctxt->myDoc, value);
2619 if (ctxt->linenumbers) {
2620 if (ctxt->input != NULL) {
2621 if (ctxt->input->line < 65535)
2622 ret->line = (short) ctxt->input->line;
2628 if (ctxt->inSubset == 1) {
2629 xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret);
2631 } else if (ctxt->inSubset == 2) {
2632 xmlAddChild((xmlNodePtr) ctxt->myDoc->extSubset, ret);
2635 if ((ctxt->myDoc->children == NULL) || (parent == NULL)) {
2640 xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret);
2670 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
2678 lastChild = xmlGetLastChild(ctxt->node);
2681 "add chars to %s \n", ctxt->node->name);
2687 ret = xmlNewCDataBlock(ctxt->myDoc, value, len);
2688 xmlAddChild(ctxt->node, ret);