27#ifdef LIBXML_XINCLUDE_ENABLED
32#define XINCLUDE_MAX_DEPTH 40
36#ifdef LIBXML_DEBUG_ENABLED
52typedef struct _xmlXIncludeRef xmlXIncludeRef;
53typedef xmlXIncludeRef *xmlXIncludeRefPtr;
54struct _xmlXIncludeRef {
66struct _xmlXIncludeCtxt {
71 xmlXIncludeRefPtr *incTab;
90 unsigned long incTotal;
119 "Memory allocation failed : %s\n",
extra);
182 if (ctxt->legacy != 0) {
197xmlXIncludeFreeRef(xmlXIncludeRefPtr
ref) {
225static xmlXIncludeRefPtr
226xmlXIncludeNewRef(xmlXIncludeCtxtPtr ctxt,
const xmlChar *URI,
228 xmlXIncludeRefPtr
ret;
233 ret = (xmlXIncludeRefPtr)
xmlMalloc(
sizeof(xmlXIncludeRef));
235 xmlXIncludeErrMemory(ctxt,
ref,
"growing XInclude context");
249 if (ctxt->incMax == 0) {
251 ctxt->incTab = (xmlXIncludeRefPtr *)
xmlMalloc(ctxt->incMax *
252 sizeof(ctxt->incTab[0]));
253 if (ctxt->incTab ==
NULL) {
254 xmlXIncludeErrMemory(ctxt,
ref,
"growing XInclude context");
255 xmlXIncludeFreeRef(
ret);
259 if (ctxt->incNr >= ctxt->incMax) {
261 ctxt->incTab = (xmlXIncludeRefPtr *)
xmlRealloc(ctxt->incTab,
262 ctxt->incMax *
sizeof(ctxt->incTab[0]));
263 if (ctxt->incTab ==
NULL) {
264 xmlXIncludeErrMemory(ctxt,
ref,
"growing XInclude context");
265 xmlXIncludeFreeRef(
ret);
269 ctxt->incTab[ctxt->incNr++] =
ret;
283 xmlXIncludeCtxtPtr
ret;
290 ret = (xmlXIncludeCtxtPtr)
xmlMalloc(
sizeof(xmlXIncludeCtxt));
293 "creating XInclude context");
316xmlXIncludeURLPush(xmlXIncludeCtxtPtr ctxt,
319 if (ctxt->urlNr > XINCLUDE_MAX_DEPTH) {
321 "detected a recursion in %s\n",
value);
324 if (ctxt->urlTab ==
NULL) {
328 ctxt->urlMax *
sizeof(ctxt->urlTab[0]));
329 if (ctxt->urlTab ==
NULL) {
330 xmlXIncludeErrMemory(ctxt,
NULL,
"adding URL");
334 if (ctxt->urlNr >= ctxt->urlMax) {
339 sizeof(ctxt->urlTab[0]));
340 if (ctxt->urlTab ==
NULL) {
341 xmlXIncludeErrMemory(ctxt,
NULL,
"adding URL");
346 return (ctxt->urlNr++);
356xmlXIncludeURLPop(xmlXIncludeCtxtPtr ctxt)
360 if (ctxt->urlNr <= 0)
364 ctxt->url = ctxt->urlTab[ctxt->urlNr - 1];
367 ret = ctxt->urlTab[ctxt->urlNr];
368 ctxt->urlTab[ctxt->urlNr] =
NULL;
380xmlXIncludeFreeContext(xmlXIncludeCtxtPtr ctxt) {
388 while (ctxt->urlNr > 0)
389 xmlXIncludeURLPop(ctxt);
390 if (ctxt->urlTab !=
NULL)
392 for (
i = 0;
i < ctxt->incNr;
i++) {
393 if (ctxt->incTab[
i] !=
NULL)
394 xmlXIncludeFreeRef(ctxt->incTab[
i]);
396 if (ctxt->incTab !=
NULL)
398 if (ctxt->txtTab !=
NULL) {
399 for (
i = 0;
i < ctxt->txtNr;
i++) {
400 if (ctxt->txtTab[
i] !=
NULL)
405 if (ctxt->txturlTab !=
NULL) {
406 for (
i = 0;
i < ctxt->txtNr;
i++) {
407 if (ctxt->txturlTab[
i] !=
NULL)
412 if (ctxt->base !=
NULL) {
426xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt,
const char *URL) {
435 xmlXIncludeErrMemory(ctxt,
NULL,
"cannot allocate parser context");
448 if ((ctxt->doc !=
NULL) && (ctxt->doc->dict !=
NULL)) {
462 if (inputStream ==
NULL) {
499 xmlXIncludeRefPtr
ref;
522 href = xmlXIncludeGetProp(ctxt,
cur, XINCLUDE_HREF);
528 parse = xmlXIncludeGetProp(ctxt,
cur, XINCLUDE_PARSE);
536 "invalid value %s for 'parse'\n", parse);
576 "failed build URL\n",
NULL);
579 fragment = xmlXIncludeGetProp(ctxt,
cur, XINCLUDE_PARSE_XPOINTER);
587 "invalid value URI %s\n", URI);
588 if (fragment !=
NULL)
595 if (ctxt->legacy != 0) {
596 if (fragment ==
NULL) {
603 "Invalid fragment identifier in URI %s use the xpointer attribute\n",
605 if (fragment !=
NULL)
618 "invalid value URI %s\n", URI);
619 if (fragment !=
NULL)
630 if ((
local == 1) && (xml == 1) &&
631 ((fragment ==
NULL) || (fragment[0] == 0))) {
633 "detected a local recursion with no xpointer in %s\n",
643 if ((!
local) && (xml == 1)) {
644 for (
i = 0;
i < ctxt->urlNr;
i++) {
647 "detected a recursion in %s\n", URL);
655 ref = xmlXIncludeNewRef(ctxt, URL,
cur);
660 ref->fragment = fragment;
676xmlXIncludeRecurseDoc(xmlXIncludeCtxtPtr ctxt,
xmlDocPtr doc,
678 xmlXIncludeCtxtPtr newctxt;
696 newctxt = xmlXIncludeNewContext(doc);
697 if (newctxt !=
NULL) {
701 newctxt->_private = ctxt->_private;
705 newctxt->incMax = ctxt->incMax;
706 newctxt->incNr = ctxt->incNr;
707 newctxt->incTab = (xmlXIncludeRefPtr *)
xmlMalloc(newctxt->incMax *
708 sizeof(newctxt->incTab[0]));
709 if (newctxt->incTab ==
NULL) {
710 xmlXIncludeErrMemory(ctxt, (
xmlNodePtr) doc,
"processing doc");
717 newctxt->urlMax = ctxt->urlMax;
718 newctxt->urlNr = ctxt->urlNr;
719 newctxt->urlTab = ctxt->urlTab;
729 newctxt->incBase = ctxt->incNr;
730 for (
i = 0;
i < ctxt->incNr;
i++) {
731 newctxt->incTab[
i] = ctxt->incTab[
i];
732 newctxt->incTab[
i]->count++;
739 newctxt->parseFlags = ctxt->parseFlags;
740 newctxt->incTotal = ctxt->incTotal;
742 ctxt->incTotal = newctxt->incTotal;
743 for (
i = 0;
i < ctxt->incNr;
i++) {
744 newctxt->incTab[
i]->count--;
745 newctxt->incTab[
i] =
NULL;
749 ctxt->urlTab = newctxt->urlTab;
750 ctxt->urlMax = newctxt->urlMax;
754 newctxt->urlTab =
NULL;
756 xmlXIncludeFreeContext(newctxt);
772xmlXIncludeAddTxt(xmlXIncludeCtxtPtr ctxt,
const xmlChar *txt,
777 if (ctxt->txtMax == 0) {
780 sizeof(ctxt->txtTab[0]));
781 if (ctxt->txtTab ==
NULL) {
782 xmlXIncludeErrMemory(ctxt,
NULL,
"processing text");
785 ctxt->txturlTab = (xmlURL *)
xmlMalloc(ctxt->txtMax *
786 sizeof(ctxt->txturlTab[0]));
787 if (ctxt->txturlTab ==
NULL) {
788 xmlXIncludeErrMemory(ctxt,
NULL,
"processing text");
792 if (ctxt->txtNr >= ctxt->txtMax) {
795 ctxt->txtMax *
sizeof(ctxt->txtTab[0]));
796 if (ctxt->txtTab ==
NULL) {
797 xmlXIncludeErrMemory(ctxt,
NULL,
"processing text");
800 ctxt->txturlTab = (xmlURL *)
xmlRealloc(ctxt->txturlTab,
801 ctxt->txtMax *
sizeof(ctxt->txturlTab[0]));
802 if (ctxt->txturlTab ==
NULL) {
803 xmlXIncludeErrMemory(ctxt,
NULL,
"processing text");
807 ctxt->txtTab[ctxt->txtNr] =
xmlStrdup(txt);
884#ifdef LIBXML_XPTR_LOCS_ENABLED
934 int level = 0, lastLevel = 0, endLevel = 0, endFlag = 0;
939 if (
range->type != XPATH_RANGE)
952 index1 =
range->index;
953 index2 =
range->index2;
972 listParent = listParent->
parent;
981 while (
level < lastLevel) {
994 if ((
cur ==
start) && (index1 > 1)) {
1006 if (
level == lastLevel)
1018 listParent =
cur->parent;
1021 if (
level == lastLevel)
1030 end = xmlXIncludeGetNthChild(
cur, index2 - 1);
1033 if ((
cur ==
start) && (index1 > 1)) {
1034 cur = xmlXIncludeGetNthChild(
cur, index1 - 1);
1060 listParent =
cur->parent;
1068 listParent =
cur->parent;
1070 cur = xmlXIncludeGetNthChild(
cur, index1 - 1);
1071 level = lastLevel = 1;
1081 switch (
cur->type) {
1107 if (
level == lastLevel)
1119 if (endFlag && (
level >= endLevel))
1150 switch (
obj->type) {
1151 case XPATH_NODESET: {
1152 xmlNodeSetPtr
set =
obj->nodesetval;
1155 for (
i = 0;
i <
set->nodeNr;
i++) {
1158 switch (
set->nodeTab[
i]->type) {
1183 tmp = xmlXIncludeCopyNode(ctxt,
target,
1223#ifdef LIBXML_XPTR_LOCS_ENABLED
1224 case XPATH_LOCATIONSET: {
1225 xmlLocationSetPtr
set = (xmlLocationSetPtr)
obj->user;
1228 for (
i = 0;
i <
set->locNr;
i++) {
1260typedef struct _xmlXIncludeMergeData xmlXIncludeMergeData;
1261typedef xmlXIncludeMergeData *xmlXIncludeMergeDataPtr;
1262struct _xmlXIncludeMergeData {
1264 xmlXIncludeCtxtPtr ctxt;
1276xmlXIncludeMergeEntity(
void *payload,
void *vdata,
1279 xmlXIncludeMergeDataPtr
data = (xmlXIncludeMergeDataPtr) vdata;
1282 xmlXIncludeCtxtPtr ctxt;
1288 if ((ctxt ==
NULL) || (doc ==
NULL))
1290 switch (ent->
etype) {
1329 switch (ent->
etype) {
1340 "mismatch in redefinition of entity %s\n",
1355xmlXIncludeMergeEntities(xmlXIncludeCtxtPtr ctxt,
xmlDocPtr doc,
1378 xmlXIncludeMergeData
data;
1384 xmlXIncludeMergeEntity, &
data);
1388 xmlXIncludeMergeData
data;
1399 xmlXIncludeMergeEntity, &
data);
1416xmlXIncludeLoadDoc(xmlXIncludeCtxtPtr ctxt,
const xmlChar *
url,
int nr) {
1422#ifdef LIBXML_XPTR_ENABLED
1426#ifdef DEBUG_XINCLUDE
1434 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1436 "invalid value URI %s\n",
url);
1443 if ((ctxt->incTab !=
NULL) && (ctxt->incTab[
nr] !=
NULL) &&
1444 (ctxt->incTab[
nr]->fragment !=
NULL)) {
1451 if (ctxt->incTab !=
NULL)
1452 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1454 "invalid value URI %s\n",
url);
1456 xmlXIncludeErr(ctxt,
NULL,
1458 "invalid value URI %s\n",
url);
1459 if (fragment !=
NULL)
1468 if ((URL[0] == 0) || (URL[0] ==
'#') ||
1477 for (
i = 0;
i < ctxt->incNr;
i++) {
1479 (ctxt->incTab[
i]->doc !=
NULL)) {
1480 doc = ctxt->incTab[
i]->
doc;
1481#ifdef DEBUG_XINCLUDE
1482 printf(
"Already loaded %s\n", URL);
1491#ifdef DEBUG_XINCLUDE
1492 printf(
"loading %s\n", URL);
1494#ifdef LIBXML_XPTR_ENABLED
1500 saveFlags = ctxt->parseFlags;
1501 if (fragment !=
NULL) {
1506 doc = xmlXIncludeParseFile(ctxt, (
const char *)URL);
1507#ifdef LIBXML_XPTR_ENABLED
1508 ctxt->parseFlags = saveFlags;
1512 if (fragment !=
NULL)
1516 ctxt->incTab[
nr]->doc = doc;
1527 for (
i =
nr + 1;
i < ctxt->incNr;
i++) {
1529 ctxt->incTab[
nr]->count++;
1530#ifdef DEBUG_XINCLUDE
1531 printf(
"Increasing %s count since reused\n", URL);
1540 xmlXIncludeMergeEntities(ctxt, ctxt->doc, doc);
1555 xmlXIncludeRecurseDoc(ctxt, doc, URL);
1558 if (fragment ==
NULL) {
1562 ctxt->incTab[
nr]->inc = xmlXIncludeCopyNodeList(ctxt, ctxt->doc,
1565#ifdef LIBXML_XPTR_ENABLED
1571 xmlXPathObjectPtr xptr;
1572 xmlXPathContextPtr xptrctxt;
1575 xptrctxt = xmlXPtrNewContext(doc,
NULL,
NULL);
1576 if (xptrctxt ==
NULL) {
1577 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1579 "could not create XPointer context\n",
NULL);
1584 xptr = xmlXPtrEval(fragment, xptrctxt);
1586 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1588 "XPointer evaluation failed: #%s\n",
1590 xmlXPathFreeContext(xptrctxt);
1595 switch (xptr->type) {
1596 case XPATH_UNDEFINED:
1600#ifdef LIBXML_XPTR_LOCS_ENABLED
1604 case XPATH_XSLT_TREE:
1605 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1607 "XPointer is not a range: #%s\n",
1609 xmlXPathFreeObject(xptr);
1610 xmlXPathFreeContext(xptrctxt);
1615 if ((xptr->nodesetval ==
NULL) ||
1616 (xptr->nodesetval->nodeNr <= 0)) {
1617 xmlXPathFreeObject(xptr);
1618 xmlXPathFreeContext(xptrctxt);
1624#ifdef LIBXML_XPTR_LOCS_ENABLED
1626 case XPATH_LOCATIONSET:
1630 set = xptr->nodesetval;
1632 for (
i = 0;
i <
set->nodeNr;
i++) {
1635 switch (
set->nodeTab[
i]->type) {
1648 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1650 "XPointer selects an attribute: #%s\n",
1655 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1657 "XPointer selects a namespace: #%s\n",
1670 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1672 "XPointer selects unexpected nodes: #%s\n",
1680 ctxt->incTab[
nr]->inc =
1681 xmlXIncludeCopyXPointer(ctxt, ctxt->doc, doc, xptr);
1682 xmlXPathFreeObject(xptr);
1683 xmlXPathFreeContext(xptrctxt);
1691 if ((doc !=
NULL) && (URL !=
NULL) &&
1710 if (curBase ==
NULL) {
1711 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1713 "trying to build relative URI from %s\n", URL);
1723 node = ctxt->incTab[
nr]->inc;
1729 if (curBase ==
NULL) {
1748 if (xmlBase !=
NULL) {
1751 if (relBase ==
NULL) {
1752 xmlXIncludeErr(ctxt,
1753 ctxt->incTab[
nr]->ref,
1755 "trying to rebuild base from %s\n",
1758 xmlNodeSetBase(
node, relBase);
1772 if ((nr < ctxt->incNr) && (ctxt->incTab[
nr]->doc !=
NULL) &&
1773 (ctxt->incTab[
nr]->count <= 1)) {
1774#ifdef DEBUG_XINCLUDE
1775 printf(
"freeing %s\n", ctxt->incTab[
nr]->doc->URL);
1778 ctxt->incTab[
nr]->doc =
NULL;
1795xmlXIncludeLoadTxt(xmlXIncludeCtxtPtr ctxt,
const xmlChar *
url,
int nr) {
1805 int xinclude_multibyte_fallback_used = 0;
1817 "invalid value URI %s\n",
url);
1822 "fragment identifier forbidden for text: %s\n",
1831 "invalid value URI %s\n",
url);
1840 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1842 "text serialization of document not available\n",
NULL);
1850 for (
i = 0;
i < ctxt->txtNr;
i++) {
1859 if ((ctxt->incTab[
nr] !=
NULL) && (ctxt->incTab[
nr]->ref !=
NULL)) {
1871 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1873 "encoding %s not supported\n",
encoding);
1886 if(inputStream ==
NULL) {
1906xinclude_multibyte_fallback:
1913 for (
i = 0;
i <
len;) {
1920 if (((
len -
i) < 4) && (!xinclude_multibyte_fallback_used)) {
1921 xinclude_multibyte_fallback_used = 1;
1923 goto xinclude_multibyte_fallback;
1925 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
1927 "%s contains invalid char\n", URL);
1934 xinclude_multibyte_fallback_used = 0;
1942 xmlXIncludeAddTxt(ctxt,
node->content, URL);
1949 ctxt->incTab[
nr]->inc =
node;
1966xmlXIncludeLoadFallback(xmlXIncludeCtxtPtr ctxt,
xmlNodePtr fallback,
int nr) {
1967 xmlXIncludeCtxtPtr newctxt;
1969 int oldNbErrors = ctxt->nbErrors;
1979 newctxt = xmlXIncludeNewContext(ctxt->doc);
1980 if (newctxt ==
NULL)
1982 newctxt->_private = ctxt->_private;
1984 xmlXIncludeSetFlags(newctxt, ctxt->parseFlags);
1985 newctxt->incTotal = ctxt->incTotal;
1986 if (xmlXIncludeDoProcess(newctxt, ctxt->doc, fallback, 1) < 0)
1988 ctxt->incTotal = newctxt->incTotal;
1989 if (ctxt->nbErrors > oldNbErrors)
1991 xmlXIncludeFreeContext(newctxt);
1995 if (ctxt->incTab[
nr]->inc ==
NULL)
1996 ctxt->incTab[
nr]->emptyFb = 1;
1998 ctxt->incTab[
nr]->inc =
NULL;
1999 ctxt->incTab[
nr]->emptyFb = 1;
2001 ctxt->incTab[
nr]->fallback = 1;
2022xmlXIncludePreProcessNode(xmlXIncludeCtxtPtr ctxt,
xmlNodePtr node) {
2023 xmlXIncludeAddNode(ctxt,
node);
2037xmlXIncludeLoadNode(xmlXIncludeCtxtPtr ctxt,
int nr) {
2049 if ((
nr < 0) || (
nr >= ctxt->incNr))
2051 cur = ctxt->incTab[
nr]->ref;
2058 href = xmlXIncludeGetProp(ctxt,
cur, XINCLUDE_HREF);
2064 parse = xmlXIncludeGetProp(ctxt,
cur, XINCLUDE_PARSE);
2065 if (parse !=
NULL) {
2071 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
2073 "invalid value %s for 'parse'\n", parse);
2100 if (escbase !=
NULL)
2102 if (eschref !=
NULL)
2106 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
2116#ifdef DEBUG_XINCLUDE
2118 xml ?
"xml":
"text");
2125 oldBase = ctxt->base;
2129 ret = xmlXIncludeLoadDoc(ctxt, URI,
nr);
2132 ret = xmlXIncludeLoadTxt(ctxt, URI,
nr);
2138 ctxt->base = oldBase;
2146#ifdef DEBUG_XINCLUDE
2149 children =
cur->children;
2150 while (children !=
NULL) {
2152 (children->
ns !=
NULL) &&
2156 ret = xmlXIncludeLoadFallback(ctxt, children,
nr);
2159 children = children->
next;
2163 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
2165 "could not load %s, and no fallback was found\n",
2193xmlXIncludeIncludeNode(xmlXIncludeCtxtPtr ctxt,
int nr) {
2198 if ((
nr < 0) || (
nr >= ctxt->incNr))
2200 cur = ctxt->incTab[
nr]->ref;
2204 list = ctxt->incTab[
nr]->inc;
2205 ctxt->incTab[
nr]->inc =
NULL;
2206 ctxt->incTab[
nr]->emptyFb = 0;
2216 while (tmp !=
NULL) {
2222 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
2224 "XInclude error: would result in multiple root nodes\n",
2239 xmlAddPrevSibling(
cur,
end);
2253 if (ctxt->incTab[
nr]->fallback)
2264 xmlXIncludeErr(ctxt, ctxt->incTab[
nr]->ref,
2266 "failed to build node\n",
NULL);
2280 xmlAddPrevSibling(
end,
cur);
2308 if (ctxt->legacy == 0) {
2311 "Deprecated XInclude namespace found, use %s",
2319 int nb_fallback = 0;
2327 xmlXIncludeErr(ctxt,
node,
2329 "%s has an 'include' child\n",
2339 if (nb_fallback > 1) {
2341 "%s has multiple fallback children\n",
2354 xmlXIncludeErr(ctxt,
node,
2356 "%s is not the child of an 'include'\n",
2385 if ((skipRoot) && (
tree->children ==
NULL))
2391 ret = xmlXIncludeURLPush(ctxt, doc->
URL);
2395 start = ctxt->incNr;
2423 if (xmlXIncludeTestNode(ctxt,
cur) == 1) {
2424#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
2429 if (ctxt->incTotal >= 20)
2433 xmlXIncludePreProcessNode(ctxt,
cur);
2434 }
else if ((
cur->children !=
NULL) &&
2454 for (
i =
start;
i < ctxt->incNr;
i++) {
2455 xmlXIncludeLoadNode(ctxt,
i);
2470 for (
i = ctxt->incBase;i < ctxt->incNr;
i++) {
2471 if ((ctxt->incTab[
i]->inc !=
NULL) ||
2472 (ctxt->incTab[
i]->emptyFb != 0))
2473 xmlXIncludeIncludeNode(ctxt,
i);
2477 xmlXIncludeURLPop(ctxt);
2491xmlXIncludeSetFlags(xmlXIncludeCtxtPtr ctxt,
int flags) {
2494 ctxt->parseFlags =
flags;
2513 xmlXIncludeCtxtPtr ctxt;
2520 ctxt = xmlXIncludeNewContext(
tree->doc);
2523 ctxt->_private =
data;
2525 xmlXIncludeSetFlags(ctxt,
flags);
2526 ret = xmlXIncludeDoProcess(ctxt,
tree->doc,
tree, 0);
2527 if ((
ret >= 0) && (ctxt->nbErrors > 0))
2530 xmlXIncludeFreeContext(ctxt);
2570 return xmlXIncludeProcessFlagsData(doc,
flags,
NULL);
2584 return(xmlXIncludeProcessFlags(doc, 0));
2599 xmlXIncludeCtxtPtr ctxt;
2605 ctxt = xmlXIncludeNewContext(
tree->doc);
2609 xmlXIncludeSetFlags(ctxt,
flags);
2610 ret = xmlXIncludeDoProcess(ctxt,
tree->doc,
tree, 0);
2611 if ((
ret >= 0) && (ctxt->nbErrors > 0))
2614 xmlXIncludeFreeContext(ctxt);
2629 return(xmlXIncludeProcessTreeFlags(
tree, 0));
2644xmlXIncludeProcessNode(xmlXIncludeCtxtPtr ctxt,
xmlNodePtr node) {
2650 ret = xmlXIncludeDoProcess(ctxt,
node->doc,
node, 0);
2651 if ((
ret >= 0) && (ctxt->nbErrors > 0))
int strcmp(const char *String1, const char *String2)
size_t xmlBufLength(const xmlBufPtr buf)
static WCHAR no[MAX_STRING_RESOURCE_LEN]
XMLPUBFUN int XMLCALL xmlCharEncCloseFunc(xmlCharEncodingHandler *handler)
XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL xmlGetCharEncodingHandler(xmlCharEncoding enc)
@ XML_CHAR_ENCODING_ERROR
XMLPUBFUN xmlCharEncoding XMLCALL xmlParseCharEncoding(const char *name)
XMLPUBFUN xmlEntityPtr XMLCALL xmlGetDocEntity(const xmlDoc *doc, const xmlChar *name)
@ XML_EXTERNAL_GENERAL_PARSED_ENTITY
@ XML_INTERNAL_PREDEFINED_ENTITY
@ XML_EXTERNAL_GENERAL_UNPARSED_ENTITY
@ XML_INTERNAL_GENERAL_ENTITY
@ XML_INTERNAL_PARAMETER_ENTITY
@ XML_EXTERNAL_PARAMETER_ENTITY
XMLPUBFUN xmlEntityPtr XMLCALL xmlAddDocEntity(xmlDocPtr doc, const xmlChar *name, int type, const xmlChar *ExternalID, const xmlChar *SystemID, const xmlChar *content)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
XMLPUBFUN int XMLCALL xmlStringCurrentChar(xmlParserCtxtPtr ctxt, const xmlChar *cur, int *len)
XMLPUBFUN int XMLCALL inputPush(xmlParserCtxtPtr ctxt, xmlParserInputPtr value)
XMLPUBFUN void XMLCALL xmlFreeInputStream(xmlParserInputPtr input)
static unsigned __int64 next
XMLPUBFUN void XMLCALL xmlDictFree(xmlDictPtr dict)
XMLPUBFUN int XMLCALL xmlDictReference(xmlDictPtr dict)
XMLPUBVAR xmlMallocFunc xmlMalloc
XMLPUBVAR xmlFreeFunc xmlFree
XMLPUBVAR void * xmlGenericErrorContext
XMLPUBVAR xmlReallocFunc xmlRealloc
XMLPUBVAR xmlGenericErrorFunc xmlGenericError
XMLPUBFUN void XMLCALL xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data)
XMLPUBFUN void XMLCALL xmlInitParser(void)
XMLPUBFUN int XMLCALL xmlCtxtUseOptions(xmlParserCtxtPtr ctxt, int options)
XMLPUBFUN void XMLCALL xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
XMLPUBFUN int XMLCALL xmlParseDocument(xmlParserCtxtPtr ctxt)
XMLPUBFUN xmlParserInputPtr XMLCALL xmlLoadExternalEntity(const char *URL, const char *ID, xmlParserCtxtPtr ctxt)
XMLPUBFUN xmlParserCtxtPtr XMLCALL xmlNewParserCtxt(void)
XMLPUBFUN xmlNodePtr XMLCALL xmlAddChild(xmlNodePtr parent, xmlNodePtr cur)
XMLPUBFUN xmlNodePtr XMLCALL xmlDocGetRootElement(const xmlDoc *doc)
XMLPUBFUN xmlDtdPtr XMLCALL xmlCreateIntSubset(xmlDocPtr doc, const xmlChar *name, const xmlChar *ExternalID, const xmlChar *SystemID)
XMLPUBFUN void XMLCALL xmlFreeDoc(xmlDocPtr cur)
XMLPUBFUN xmlChar *XMLCALL xmlGetProp(const xmlNode *node, const xmlChar *name)
XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns, const xmlChar *name, const xmlChar *content)
XMLPUBFUN void XMLCALL xmlNodeAddContentLen(xmlNodePtr cur, const xmlChar *content, int len)
XMLPUBFUN xmlChar *XMLCALL xmlGetNsProp(const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace)
XMLPUBFUN xmlNodePtr XMLCALL xmlAddNextSibling(xmlNodePtr cur, xmlNodePtr elem)
XMLPUBFUN void XMLCALL xmlUnlinkNode(xmlNodePtr cur)
XMLPUBFUN xmlChar *XMLCALL xmlNodeGetBase(const xmlDoc *doc, const xmlNode *cur)
XMLPUBFUN size_t XMLCALL xmlBufShrink(xmlBufPtr buf, size_t len)
XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocTextLen(xmlDocPtr doc, const xmlChar *content, int len)
#define XML_XML_NAMESPACE
XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocText(const xmlDoc *doc, const xmlChar *content)
XMLPUBFUN xmlNodePtr XMLCALL xmlDocCopyNodeList(xmlDocPtr doc, xmlNodePtr node)
XMLPUBFUN void XMLCALL xmlFreeNodeList(xmlNodePtr cur)
XMLPUBFUN void XMLCALL xmlFreeNode(xmlNodePtr cur)
XMLPUBFUN xmlChar *XMLCALL xmlBufContent(const xmlBuf *buf)
XMLPUBFUN xmlNodePtr XMLCALL xmlDocCopyNode(xmlNodePtr node, xmlDocPtr doc, int recursive)
struct _xmlDictEntry * dict
struct _xmlDtd * intSubset
struct _xmlNode * children
const xmlChar * ExternalID
struct _xmlNode * children
XMLPUBFUN xmlURIPtr XMLCALL xmlParseURI(const char *str)
XMLPUBFUN xmlChar *XMLCALL xmlURIEscape(const xmlChar *str)
XMLPUBFUN xmlChar *XMLCALL xmlSaveUri(xmlURIPtr uri)
XMLPUBFUN void XMLCALL xmlFreeURI(xmlURIPtr uri)
XMLPUBFUN xmlChar *XMLCALL xmlBuildURI(const xmlChar *URI, const xmlChar *base)
XMLPUBFUN xmlChar *XMLCALL xmlBuildRelativeURI(const xmlChar *URI, const xmlChar *base)
XMLPUBFUN char *XMLCALL xmlParserGetDirectory(const char *filename)
XMLPUBFUN void XMLCALL xmlFreeParserInputBuffer(xmlParserInputBufferPtr in)
XMLPUBFUN int XMLCALL xmlParserInputBufferRead(xmlParserInputBufferPtr in, int len)
@ XML_XINCLUDE_ENTITY_DEF_MISMATCH
@ XML_XINCLUDE_INCLUDE_IN_INCLUDE
@ XML_XINCLUDE_TEXT_FRAGMENT
@ XML_XINCLUDE_UNKNOWN_ENCODING
@ XML_XINCLUDE_XPTR_FAILED
@ XML_XINCLUDE_INVALID_CHAR
@ XML_XINCLUDE_XPTR_RESULT
@ XML_XINCLUDE_DEPRECATED_NS
@ XML_XINCLUDE_PARSE_VALUE
@ XML_XINCLUDE_TEXT_DOCUMENT
@ XML_XINCLUDE_FALLBACKS_IN_INCLUDE
@ XML_XINCLUDE_MULTIPLE_ROOT
@ XML_XINCLUDE_NO_FALLBACK
@ XML_XINCLUDE_FRAGMENT_ID
@ XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE
@ XML_XINCLUDE_BUILD_FAILED
XMLPUBFUN const xmlChar *XMLCALL xmlStrchr(const xmlChar *str, xmlChar val)
XMLPUBFUN xmlChar *XMLCALL xmlStrdup(const xmlChar *cur)
XMLPUBFUN int XMLCALL xmlStrEqual(const xmlChar *str1, const xmlChar *str2)
XMLPUBFUN int XMLCALL xmlStrcmp(const xmlChar *str1, const xmlChar *str2)
#define LIBXML_ATTR_FORMAT(fmt, args)