15 #pragma convert("ISO8859-1") 30 #ifdef LIBXML_ZLIB_ENABLED 43 #ifdef LIBXML_HTML_ENABLED 46 #ifdef LIBXML_DEBUG_ENABLED 97 msg =
"invalid hexadecimal character value\n";
100 msg =
"invalid decimal character value\n";
103 msg =
"unterminated entity reference %15s\n";
106 msg =
"string is not in UTF-8\n";
109 msg =
"unexpected error number\n";
123 {
't',
'e',
'x',
't',
'n',
'o',
'e',
'n',
'c', 0 };
127 static int xmlCompressMode = 0;
128 static int xmlCheckDTD = 1;
130 #define UPDATE_LAST_CHILD_AND_PARENT(n) if ((n) != NULL) { \ 131 xmlNodePtr ulccur = (n)->children; \ 132 if (ulccur == NULL) { \ 135 while (ulccur->next != NULL) { \ 136 ulccur->parent = (n); \ 137 ulccur = ulccur->next; \ 139 ulccur->parent = (n); \ 140 (n)->last = ulccur; \ 143 #define IS_STR_XML(str) ((str != NULL) && (str[0] == 'x') && \ 144 (str[1] == 'm') && (str[2] == 'l') && (str[3] == 0)) 157 #ifdef LIBXML_TREE_ENABLED 231 lenn =
strlen((
char *) ncname);
232 lenp =
strlen((
char *) prefix);
246 ret[lenn + lenp + 1] = 0;
276 #ifndef XML_XML_NAMESPACE 278 if ((
name[0] ==
'x') && (
name[1] ==
'm') &&
279 (
name[2] ==
'l') && (
name[3] ==
':'))
298 if (*prefix ==
NULL) {
305 if (*prefix !=
NULL) {
359 #define CUR_SCHAR(s, l) xmlStringCurrentChar(NULL, s, &l) 361 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) 385 if (((*
cur >=
'a') && (*
cur <=
'z')) || ((*
cur >=
'A') && (*
cur <=
'Z')) ||
390 while (((*
cur >=
'a') && (*
cur <=
'z')) ||
391 ((*
cur >=
'A') && (*
cur <=
'Z')) ||
392 ((*
cur >=
'0') && (*
cur <=
'9')) ||
393 (*
cur ==
'_') || (*
cur ==
'-') || (*
cur ==
'.'))
435 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) 458 if (((*
cur >=
'a') && (*
cur <=
'z')) || ((*
cur >=
'A') && (*
cur <=
'Z')) ||
463 while (((*
cur >=
'a') && (*
cur <=
'z')) ||
464 ((*
cur >=
'A') && (*
cur <=
'Z')) ||
465 ((*
cur >=
'0') && (*
cur <=
'9')) ||
466 (*
cur ==
'_') || (*
cur ==
'-') || (*
cur ==
'.'))
470 if (((*
cur >=
'a') && (*
cur <=
'z')) ||
471 ((*
cur >=
'A') && (*
cur <=
'Z')) ||
476 while (((*
cur >=
'a') && (*
cur <=
'z')) ||
477 ((*
cur >=
'A') && (*
cur <=
'Z')) ||
478 ((*
cur >=
'0') && (*
cur <=
'9')) ||
479 (*
cur ==
'_') || (*
cur ==
'-') || (*
cur ==
'.'))
556 if (((*
cur >=
'a') && (*
cur <=
'z')) || ((*
cur >=
'A') && (*
cur <=
'Z')) ||
557 (*
cur ==
'_') || (*
cur ==
':'))
561 while (((*
cur >=
'a') && (*
cur <=
'z')) ||
562 ((*
cur >=
'A') && (*
cur <=
'Z')) ||
563 ((*
cur >=
'0') && (*
cur <=
'9')) ||
564 (*
cur ==
'_') || (*
cur ==
'-') || (*
cur ==
'.') || (*
cur ==
':'))
625 if (((*
cur >=
'a') && (*
cur <=
'z')) ||
626 ((*
cur >=
'A') && (*
cur <=
'Z')) ||
627 ((*
cur >=
'0') && (*
cur <=
'9')) ||
628 (*
cur ==
'_') || (*
cur ==
'-') || (*
cur ==
'.') || (*
cur ==
':'))
632 while (((*
cur >=
'a') && (*
cur <=
'z')) ||
633 ((*
cur >=
'A') && (*
cur <=
'Z')) ||
634 ((*
cur >=
'0') && (*
cur <=
'9')) ||
635 (*
cur ==
'_') || (*
cur ==
'-') || (*
cur ==
'.') || (*
cur ==
':'))
811 "xmlSetNs: node == NULL\n");
831 "xmlFreeNs : ns == NULL\n");
852 "xmlFreeNsList : ns == NULL\n");
883 "xmlNewDtd(%s): document %s already have a DTD %s\n",
903 if (ExternalID !=
NULL)
905 if (SystemID !=
NULL)
958 "xmlCreateIntSubset(): document %s already have an internal subset\n",
983 if (ExternalID !=
NULL) {
993 if (SystemID !=
NULL) {
1056 #define DICT_FREE(str) \ 1057 if ((str) && ((!dict) || \ 1058 (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ 1059 xmlFree((char *)(str)); 1069 #define DICT_COPY(str, cpy) \ 1072 if (xmlDictOwns(dict, (const xmlChar *)(str))) \ 1073 cpy = (xmlChar *) (str); \ 1075 cpy = (xmlChar *) xmlDictLookup((dict), (const xmlChar *)(str), -1); \ 1077 cpy = xmlStrdup((const xmlChar *)(str)); } 1086 #define DICT_CONST_COPY(str, cpy) \ 1089 if (xmlDictOwns(dict, (const xmlChar *)(str))) \ 1090 cpy = (const xmlChar *) (str); \ 1092 cpy = xmlDictLookup((dict), (const xmlChar *)(str), -1); \ 1094 cpy = (const xmlChar *) xmlStrdup((const xmlChar *)(str)); } 1185 cur->standalone = -1;
1186 cur->compression = -1;
1188 cur->parseFlags = 0;
1216 "xmlFreeDoc : document == NULL\n");
1220 #ifdef LIBXML_DEBUG_RUNTIME 1221 #ifdef LIBXML_DEBUG_ENABLED 1238 extSubset =
cur->extSubset;
1239 intSubset =
cur->intSubset;
1240 if (intSubset == extSubset)
1242 if (extSubset !=
NULL) {
1247 if (intSubset !=
NULL) {
1292 if (
cur[0] ==
'&') {
1304 if ((
cur + 2 <
end) && (
cur[1] ==
'#') && (
cur[2] ==
'x')) {
1310 while (tmp !=
';') {
1311 if ((tmp >=
'0') && (tmp <=
'9'))
1312 charval = charval * 16 + (tmp -
'0');
1313 else if ((tmp >=
'a') && (tmp <=
'f'))
1314 charval = charval * 16 + (tmp -
'a') + 10;
1315 else if ((tmp >=
'A') && (tmp <=
'F'))
1316 charval = charval * 16 + (tmp -
'A') + 10;
1332 }
else if ((
cur + 1 <
end) && (
cur[1] ==
'#')) {
1338 while (tmp !=
';') {
1339 if ((tmp >=
'0') && (tmp <=
'9'))
1340 charval = charval * 10 + (tmp -
'0');
1374 if ((ent !=
NULL) &&
1502 if (
cur[0] ==
'&') {
1514 if ((
cur[1] ==
'#') && (
cur[2] ==
'x')) {
1517 while (tmp !=
';') {
1518 if ((tmp >=
'0') && (tmp <=
'9'))
1519 charval = charval * 16 + (tmp -
'0');
1520 else if ((tmp >=
'a') && (tmp <=
'f'))
1521 charval = charval * 16 + (tmp -
'a') + 10;
1522 else if ((tmp >=
'A') && (tmp <=
'F'))
1523 charval = charval * 16 + (tmp -
'A') + 10;
1536 }
else if (
cur[1] ==
'#') {
1539 while (tmp !=
';') {
1540 if ((tmp >=
'0') && (tmp <=
'9'))
1541 charval = charval * 10 + (tmp -
'0');
1560 while ((*
cur != 0) && (*
cur !=
';'))
cur++;
1572 if ((ent !=
NULL) &&
1743 "xmlGetNodeListString : invalid node type %d\n",
1752 #ifdef LIBXML_TREE_ENABLED 1803 xmlNodeListGetRawString(doc, ent->
children, 1);
1826 "xmlGetNodeListString : invalid node type %d\n",
1845 if ((eatname == 1) &&
1857 if ((eatname == 1) &&
1893 tmp =
cur->children;
1894 while (tmp !=
NULL) {
1927 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ 1928 defined(LIBXML_SCHEMAS_ENABLED) 1944 "xmlNewProp : name == NULL\n");
1970 "xmlNewNsProp : name == NULL\n");
1995 "xmlNewNsPropEatName : name == NULL\n");
2019 "xmlNewDocProp : name == NULL\n");
2046 tmp =
cur->children;
2047 while (tmp !=
NULL) {
2117 "xmlRemoveProp : cur == NULL\n");
2124 "xmlRemoveProp : cur->parent == NULL\n");
2128 tmp =
cur->parent->properties;
2130 cur->parent->properties =
cur->next;
2136 while (tmp !=
NULL) {
2140 tmp->
next->prev = tmp;
2148 "xmlRemoveProp : attribute not owned by its node\n");
2169 "xmlNewPI : name == NULL\n");
2231 "xmlNewNode : name == NULL\n");
2273 "xmlNewNode : name == NULL\n");
2372 #ifdef LIBXML_TREE_ENABLED 2463 #ifdef LIBXML_TREE_ENABLED 2491 "xmlNewTextChild : parent == NULL\n");
2499 "xmlNewTextChild : name == NULL\n");
2572 if (
name[0] ==
'&') {
2616 if (
name[0] ==
'&') {
2809 if (
tree->doc != doc) {
2811 prop =
tree->properties;
2812 while (prop !=
NULL) {
2858 if (
cur->doc != doc)
2864 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) 2890 "xmlNewChild : parent == NULL\n");
2898 "xmlNewChild : name == NULL\n");
2972 if (prop->
doc !=
cur->doc) {
2981 prop->
next->prev = prop;
3014 "xmlAddNextSibling : cur == NULL\n");
3021 "xmlAddNextSibling : elem == NULL\n");
3029 "xmlAddNextSibling : cur == elem\n");
3043 (
cur->name ==
cur->next->name)) {
3071 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ 3072 defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) 3092 "xmlAddPrevSibling : cur == NULL\n");
3099 "xmlAddPrevSibling : elem == NULL\n");
3107 "xmlAddPrevSibling : cur == elem\n");
3126 (
cur->name ==
cur->prev->name)) {
3132 return xmlAddPropSibling(
cur->prev,
cur,
elem);
3170 "xmlAddSibling : cur == NULL\n");
3178 "xmlAddSibling : elem == NULL\n");
3186 "xmlAddSibling : cur == elem\n");
3196 (
cur->parent->children !=
NULL) &&
3197 (
cur->parent->last !=
NULL) &&
3198 (
cur->parent->last->next ==
NULL)) {
3246 "xmlAddChildList : parent == NULL\n");
3254 "xmlAddChildList : child == NULL\n");
3263 "Elements moved to a different document\n");
3332 "xmlAddChild : parent == NULL\n");
3340 "xmlAddChild : child == NULL\n");
3348 "xmlAddChild : parent == cur\n");
3423 lastattr = lastattr->
next;
3454 "xmlGetLastChild : parent == NULL\n");
3461 #ifdef LIBXML_TREE_ENABLED 3480 unsigned long ret = 0;
3592 switch (
node->type) {
3631 switch (
node->type) {
3678 (
cur->type == XML_DOCB_DOCUMENT_NODE) ||
3686 while ((
cur->children !=
NULL) &&
3780 if ((
cur->children !=
NULL) &&
3830 "xmlUnlinkNode : node == NULL\n");
3883 cur->next->prev =
cur->prev;
3885 cur->prev->next =
cur->next;
3889 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) 3908 "xmlReplaceNode : old == NULL or without parent\n");
3922 "xmlReplaceNode : Trying to replace attribute node with other node type\n");
3929 "xmlReplaceNode : Trying to replace a non-attribute node with attribute node\n");
3947 if (
cur->parent->children == old)
3948 cur->parent->children =
cur;
3949 if (
cur->parent->last == old)
3978 switch (
cur->type) {
3985 "xmlCopyNamespace: invalid type %d\n",
cur->type);
4030 else if (doc !=
NULL)
4034 else if (
cur->children !=
NULL)
4092 tmp =
ret->children;
4093 while (tmp !=
NULL) {
4190 switch (
node->type) {
4209 #ifdef LIBXML_DOCB_ENABLED 4210 case XML_DOCB_DOCUMENT_NODE:
4212 #ifdef LIBXML_TREE_ENABLED 4312 if ((doc ==
NULL) || (
node->doc != doc)) {
4321 ret->children =
node->children;
4323 ret->last =
ret->children;
4324 }
else if ((
node->children !=
NULL) && (extended != 2)) {
4325 ret->children = xmlStaticCopyNodeList(
node->children, doc,
ret);
4343 #ifdef LIBXML_TREE_ENABLED 4367 }
else if (
p !=
q) {
4413 ret = xmlStaticCopyNode(
node, doc,
NULL, extended);
4445 #if defined(LIBXML_TREE_ENABLED) 4463 ret->entities = (
void *) xmlCopyEntitiesTable(
4466 ret->notations = (
void *) xmlCopyNotationTable(
4469 ret->elements = (
void *) xmlCopyElementTable(
4472 ret->attributes = (
void *) xmlCopyAttributeTable(
4475 ret->pentities = (
void *) xmlCopyEntitiesTable(
4484 switch (tmp->
etype) {
4493 xmlGetParameterEntityFromDtd(
ret, tmp->
name);
4532 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) 4544 xmlCopyDoc(
xmlDocPtr doc,
int recursive) {
4559 if (!recursive)
return(
ret);
4563 #ifdef LIBXML_TREE_ENABLED 4571 ret->intSubset->parent =
ret;
4582 tmp =
ret->children;
4583 while (tmp !=
NULL) {
4623 if (
node->line == 65535) {
4662 return(xmlGetLineNoInternal(
node, 0));
4665 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) 4685 int occur = 0,
generic;
4718 name = (
const char *)
cur->name;
4720 if (
cur->ns->prefix !=
NULL) {
4721 snprintf(nametemp,
sizeof(nametemp) - 1,
"%s:%s",
4722 (
char *)
cur->ns->prefix, (
char *)
cur->name);
4723 nametemp[
sizeof(nametemp) - 1] = 0;
4741 while (tmp !=
NULL) {
4745 ((tmp->
ns ==
cur->ns) ||
4753 while (tmp !=
NULL && occur == 0) {
4757 ((tmp->
ns ==
cur->ns) ||
4776 while (tmp !=
NULL) {
4783 while (tmp !=
NULL && occur == 0) {
4802 while (tmp !=
NULL) {
4814 while (tmp !=
NULL) {
4827 snprintf(nametemp,
sizeof(nametemp) - 1,
4828 "processing-instruction('%s')", (
char *)
cur->name);
4829 nametemp[
sizeof(nametemp) - 1] = 0;
4838 while (tmp !=
NULL) {
4846 while (tmp !=
NULL && occur == 0) {
4862 snprintf(nametemp,
sizeof(nametemp) - 1,
"%s:%s",
4863 (
char *)
cur->ns->prefix, (
char *)
cur->name);
4865 snprintf(nametemp,
sizeof(nametemp) - 1,
"%s",
4867 nametemp[
sizeof(nametemp) - 1] = 0;
4935 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) 4958 while (old !=
NULL) {
4971 xmlReplaceNode(old,
root);
4977 #if defined(LIBXML_TREE_ENABLED) 5008 #ifdef LIBXML_DOCB_ENABLED