1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-03-31 06:50:06 +03:00

Large commit of changes done while travelling to XML'99

- cleanups on memory use and parsers
- start of Link interfaces HTML and XLink
- rebuild the doc
- released as 1.8.0
Daniel
This commit is contained in:
Daniel Veillard 1999-12-12 13:03:50 +00:00
parent 4a53eca27c
commit 10a2c6532a
33 changed files with 2544 additions and 663 deletions

View File

@ -1,3 +1,25 @@
Sun Dec 12 13:08:15 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
* configure.in, doc/xml.html : bumped to 1.8.0
* xlink.[ch], Makefile.am : added framework for link detection
* parser.h: added nbChars to parser context, needed for cleanup.
* xmlmemory.c: removed a nasty bug when out of mem
* valid.[ch]: adding namespace support for attribute decl
* tester.c: added --debugent option
* debugXML.[ch]: added xmlDebugDumpEntities()
* parser.c: cleanup, avoiding use of CUR_PTR like plague, using
buffers instead, this was really needed, validation was breaking
in strange ways due to that. Added xmlParseStringPEReference()
and other parsing from strings functions. Entities processing
modified again, but PERef are still not handled correcly but
unless you're Eve Maller you won't notice :-)
* HTMLparser.c: large changes toward reliability, and switched to
lowercase internal tags, XHTML is lowercase, so it will help
that output is closer to next version.
* doc/* : regenerated the documentation, it is now hosted at
http://xmlsoft.org/ (same bits I just bought the domain :-)
Fri Dec 3 13:46:32 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
* SAX.h, SAX.c, makefile.am: added SAX.h mostly useful for the

View File

@ -28,7 +28,8 @@ libxml_la_SOURCES = \
xmlIO.c \
xmlmemory.c \
nanohttp.c \
valid.c
valid.c \
xlink.c
xmlincdir = $(includedir)/gnome-xml
xmlinc_HEADERS = \
@ -46,7 +47,8 @@ xmlinc_HEADERS = \
xmlIO.h \
xmlmemory.h \
nanohttp.h \
valid.h
valid.h \
xlink.h
DEPS = $(top_builddir)/libxml.la
LDADDS = $(top_builddir)/libxml.la @Z_LIBS@ @M_LIBS@

1
SAX.h
View File

@ -10,6 +10,7 @@
#include <stdio.h>
#include <stdlib.h>
#include "parser.h"
#include "xlink.h"
#ifndef __XML_SAX_H__
#define __XML_SAX_H__

View File

@ -4,8 +4,8 @@ AC_INIT(entities.h)
AM_CONFIG_HEADER(config.h)
LIBXML_MAJOR_VERSION=1
LIBXML_MINOR_VERSION=7
LIBXML_MICRO_VERSION=4
LIBXML_MINOR_VERSION=8
LIBXML_MICRO_VERSION=0
LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION
LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION

View File

@ -280,3 +280,136 @@ void xmlDebugDumpDocument(FILE *output, xmlDocPtr doc) {
if (doc->root != NULL)
xmlDebugDumpNodeList(output, doc->root, 1);
}
void xmlDebugDumpEntities(FILE *output, xmlDocPtr doc) {
int i;
xmlEntityPtr cur;
if (output == NULL) output = stdout;
if (doc == NULL) {
fprintf(output, "DOCUMENT == NULL !\n");
return;
}
switch (doc->type) {
case XML_ELEMENT_NODE:
fprintf(output, "Error, ELEMENT found here ");
break;
case XML_ATTRIBUTE_NODE:
fprintf(output, "Error, ATTRIBUTE found here\n");
break;
case XML_TEXT_NODE:
fprintf(output, "Error, TEXT\n");
break;
case XML_CDATA_SECTION_NODE:
fprintf(output, "Error, CDATA_SECTION\n");
break;
case XML_ENTITY_REF_NODE:
fprintf(output, "Error, ENTITY_REF\n");
break;
case XML_ENTITY_NODE:
fprintf(output, "Error, ENTITY\n");
break;
case XML_PI_NODE:
fprintf(output, "Error, PI\n");
break;
case XML_COMMENT_NODE:
fprintf(output, "Error, COMMENT\n");
break;
case XML_DOCUMENT_NODE:
fprintf(output, "DOCUMENT\n");
break;
case XML_HTML_DOCUMENT_NODE:
fprintf(output, "HTML DOCUMENT\n");
break;
case XML_DOCUMENT_TYPE_NODE:
fprintf(output, "Error, DOCUMENT_TYPE\n");
break;
case XML_DOCUMENT_FRAG_NODE:
fprintf(output, "Error, DOCUMENT_FRAG\n");
break;
case XML_NOTATION_NODE:
fprintf(output, "Error, NOTATION\n");
break;
default:
fprintf(output, "NODE_%d\n", doc->type);
}
if ((doc->intSubset != NULL) && (doc->intSubset->entities != NULL)) {
xmlEntitiesTablePtr table = (xmlEntitiesTablePtr)
doc->intSubset->entities;
fprintf(output, "Entities in internal subset\n");
for (i = 0;i < table->nb_entities;i++) {
cur = &table->table[i];
fprintf(output, "%d : %s : ", i, cur->name);
switch (cur->type) {
case XML_INTERNAL_GENERAL_ENTITY:
fprintf(output, "INTERNAL GENERAL");
break;
case XML_EXTERNAL_GENERAL_PARSED_ENTITY:
fprintf(output, "EXTERNAL PARSED");
break;
case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY:
fprintf(output, "EXTERNAL UNPARSED");
break;
case XML_INTERNAL_PARAMETER_ENTITY:
fprintf(output, "INTERNAL PARAMETER");
break;
case XML_EXTERNAL_PARAMETER_ENTITY:
fprintf(output, "EXTERNAL PARAMETER");
break;
default:
fprintf(output, "UNKNOWN TYPE %d",
cur->type);
}
if (cur->ExternalID != NULL)
fprintf(output, "ID \"%s\"", cur->ExternalID);
if (cur->SystemID != NULL)
fprintf(output, "SYSTEM \"%s\"", cur->SystemID);
if (cur->orig != NULL)
fprintf(output, "\n orig \"%s\"", cur->orig);
if (cur->content != NULL)
fprintf(output, "\n content \"%s\"", cur->content);
fprintf(output, "\n");
}
} else
fprintf(output, "No entities in internal subset\n");
if ((doc->extSubset != NULL) && (doc->extSubset->entities != NULL)) {
xmlEntitiesTablePtr table = (xmlEntitiesTablePtr)
doc->extSubset->entities;
fprintf(output, "Entities in external subset\n");
for (i = 0;i < table->nb_entities;i++) {
cur = &table->table[i];
fprintf(output, "%d : %s : ", i, cur->name);
switch (cur->type) {
case XML_INTERNAL_GENERAL_ENTITY:
fprintf(output, "INTERNAL GENERAL");
break;
case XML_EXTERNAL_GENERAL_PARSED_ENTITY:
fprintf(output, "EXTERNAL PARSED");
break;
case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY:
fprintf(output, "EXTERNAL UNPARSED");
break;
case XML_INTERNAL_PARAMETER_ENTITY:
fprintf(output, "INTERNAL PARAMETER");
break;
case XML_EXTERNAL_PARAMETER_ENTITY:
fprintf(output, "EXTERNAL PARAMETER");
break;
default:
fprintf(output, "UNKNOWN TYPE %d",
cur->type);
}
if (cur->ExternalID != NULL)
fprintf(output, "ID \"%s\"", cur->ExternalID);
if (cur->SystemID != NULL)
fprintf(output, "SYSTEM \"%s\"", cur->SystemID);
if (cur->orig != NULL)
fprintf(output, "\n orig \"%s\"", cur->orig);
if (cur->content != NULL)
fprintf(output, "\n content \"%s\"", cur->content);
fprintf(output, "\n");
}
} else
fprintf(output, "No entities in external subset\n");
}

View File

@ -16,4 +16,5 @@ extern void xmlDebugDumpOneNode(FILE *output, xmlNodePtr node, int depth);
extern void xmlDebugDumpNode(FILE *output, xmlNodePtr node, int depth);
extern void xmlDebugDumpNodeList(FILE *output, xmlNodePtr node, int depth);
extern void xmlDebugDumpDocument(FILE *output, xmlDocPtr doc);
extern void xmlDebugDumpEntities(FILE *output, xmlDocPtr doc);
#endif /* __DEBUG_XML__ */

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN5370"
NAME="AEN5438"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN5370"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN5373"
NAME="AEN5441"
></A
><H2
>Synopsis</H2
@ -348,7 +348,7 @@ HREF="gnome-xml-entities.html#XMLCLEANUPPREDEFINEDENTITIES"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN5431"
NAME="AEN5499"
></A
><H2
>Description</H2
@ -358,14 +358,14 @@ NAME="AEN5431"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN5434"
NAME="AEN5502"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN5436"
NAME="AEN5504"
></A
><H3
><A
@ -391,7 +391,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5441"
NAME="AEN5509"
></A
><H3
><A
@ -417,7 +417,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5446"
NAME="AEN5514"
></A
><H3
><A
@ -443,7 +443,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5451"
NAME="AEN5519"
></A
><H3
><A
@ -469,7 +469,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5456"
NAME="AEN5524"
></A
><H3
><A
@ -495,7 +495,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5461"
NAME="AEN5529"
></A
><H3
><A
@ -521,7 +521,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5466"
NAME="AEN5534"
></A
><H3
><A
@ -547,7 +547,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5471"
NAME="AEN5539"
></A
><H3
><A
@ -573,7 +573,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5476"
NAME="AEN5544"
></A
><H3
><A
@ -599,7 +599,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5481"
NAME="AEN5549"
></A
><H3
><A
@ -764,7 +764,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5521"
NAME="AEN5589"
></A
><H3
><A
@ -929,7 +929,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5561"
NAME="AEN5629"
></A
><H3
><A
@ -1010,7 +1010,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5582"
NAME="AEN5650"
></A
><H3
><A
@ -1114,7 +1114,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5608"
NAME="AEN5676"
></A
><H3
><A
@ -1217,7 +1217,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5634"
NAME="AEN5702"
></A
><H3
><A
@ -1320,7 +1320,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5660"
NAME="AEN5728"
></A
><H3
><A
@ -1429,7 +1429,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5688"
NAME="AEN5756"
></A
><H3
><A
@ -1537,7 +1537,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5715"
NAME="AEN5783"
></A
><H3
><A
@ -1598,7 +1598,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5731"
NAME="AEN5799"
></A
><H3
><A
@ -1679,7 +1679,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5752"
NAME="AEN5820"
></A
><H3
><A
@ -1742,7 +1742,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5768"
NAME="AEN5836"
></A
><H3
><A
@ -1826,7 +1826,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5789"
NAME="AEN5857"
></A
><H3
><A

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN7447"
NAME="AEN7515"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN7447"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN7450"
NAME="AEN7518"
></A
><H2
>Synopsis</H2
@ -277,7 +277,7 @@ HREF="gnome-xml-htmlparser.html#HTMLPARSEFILE"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7488"
NAME="AEN7556"
></A
><H2
>Description</H2
@ -287,14 +287,14 @@ NAME="AEN7488"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7491"
NAME="AEN7559"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN7493"
NAME="AEN7561"
></A
><H3
><A
@ -320,7 +320,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7498"
NAME="AEN7566"
></A
><H3
><A
@ -346,7 +346,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7503"
NAME="AEN7571"
></A
><H3
><A
@ -372,7 +372,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7508"
NAME="AEN7576"
></A
><H3
><A
@ -398,7 +398,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7513"
NAME="AEN7581"
></A
><H3
><A
@ -424,7 +424,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7518"
NAME="AEN7586"
></A
><H3
><A
@ -450,7 +450,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7523"
NAME="AEN7591"
></A
><H3
><A
@ -476,7 +476,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7528"
NAME="AEN7596"
></A
><H3
><A
@ -502,7 +502,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7533"
NAME="AEN7601"
></A
><H3
><A
@ -528,7 +528,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7538"
NAME="AEN7606"
></A
><H3
><A
@ -609,7 +609,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7559"
NAME="AEN7627"
></A
><H3
><A
@ -692,7 +692,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7581"
NAME="AEN7649"
></A
><H3
><A
@ -797,7 +797,7 @@ if non-NULL *str will have to be freed by the caller.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7608"
NAME="AEN7676"
></A
><H3
><A
@ -881,7 +881,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7630"
NAME="AEN7698"
></A
><H3
><A
@ -948,7 +948,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7648"
NAME="AEN7716"
></A
><H3
><A
@ -1088,7 +1088,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7682"
NAME="AEN7750"
></A
><H3
><A
@ -1187,7 +1187,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7707"
NAME="AEN7775"
></A
><H3
><A
@ -1325,7 +1325,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7740"
NAME="AEN7808"
></A
><H3
><A

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN7769"
NAME="AEN7837"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN7769"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN7772"
NAME="AEN7840"
></A
><H2
>Synopsis</H2
@ -188,7 +188,7 @@ HREF="gnome-xml-tree.html#XMLDOCPTR"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7786"
NAME="AEN7854"
></A
><H2
>Description</H2
@ -198,14 +198,14 @@ NAME="AEN7786"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7789"
NAME="AEN7857"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN7791"
NAME="AEN7859"
></A
><H3
><A
@ -231,7 +231,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7796"
NAME="AEN7864"
></A
><H3
><A
@ -257,7 +257,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7801"
NAME="AEN7869"
></A
><H3
><A
@ -283,7 +283,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7806"
NAME="AEN7874"
></A
><H3
><A
@ -386,7 +386,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7831"
NAME="AEN7899"
></A
><H3
><A
@ -470,7 +470,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7852"
NAME="AEN7920"
></A
><H3
><A

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN8149"
NAME="AEN8217"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN8149"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN8152"
NAME="AEN8220"
></A
><H2
>Synopsis</H2
@ -183,7 +183,7 @@ HREF="gnome-xml-nanohttp.html#XMLNANOHTTPCLOSE"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN8162"
NAME="AEN8230"
></A
><H2
>Description</H2
@ -193,14 +193,14 @@ NAME="AEN8162"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN8165"
NAME="AEN8233"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN8167"
NAME="AEN8235"
></A
><H3
><A
@ -314,7 +314,7 @@ if provided must be freed by the caller</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8194"
NAME="AEN8262"
></A
><H3
><A
@ -453,7 +453,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8226"
NAME="AEN8294"
></A
><H3
><A
@ -533,7 +533,7 @@ returned at that location</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8245"
NAME="AEN8313"
></A
><H3
><A
@ -608,7 +608,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8264"
NAME="AEN8332"
></A
><H3
><A
@ -731,7 +731,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8293"
NAME="AEN8361"
></A
><H3
><A
@ -825,7 +825,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8316"
NAME="AEN8384"
></A
><H3
><A

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN8563"
NAME="AEN8631"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN8563"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN8566"
NAME="AEN8634"
></A
><H2
>Synopsis</H2
@ -886,7 +886,7 @@ HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN8777"
NAME="AEN8845"
></A
><H2
>Description</H2
@ -896,14 +896,14 @@ NAME="AEN8777"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN8780"
NAME="AEN8848"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN8782"
NAME="AEN8850"
></A
><H3
><A
@ -929,7 +929,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8787"
NAME="AEN8855"
></A
><H3
><A
@ -942,7 +942,7 @@ NAME="CHARVAL"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8791"
NAME="AEN8859"
></A
><H3
><A
@ -1000,7 +1000,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8805"
NAME="AEN8873"
></A
><H3
><A
@ -1058,7 +1058,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8819"
NAME="AEN8887"
></A
><H3
><A
@ -1116,7 +1116,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8833"
NAME="AEN8901"
></A
><H3
><A
@ -1174,7 +1174,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8847"
NAME="AEN8915"
></A
><H3
><A
@ -1232,7 +1232,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8861"
NAME="AEN8929"
></A
><H3
><A
@ -1290,7 +1290,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8875"
NAME="AEN8943"
></A
><H3
><A
@ -1348,7 +1348,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8889"
NAME="AEN8957"
></A
><H3
><A
@ -1406,7 +1406,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8903"
NAME="AEN8971"
></A
><H3
><A
@ -1464,7 +1464,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8917"
NAME="AEN8985"
></A
><H3
><A
@ -1522,7 +1522,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8931"
NAME="AEN8999"
></A
><H3
><A
@ -1580,7 +1580,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8945"
NAME="AEN9013"
></A
><H3
><A
@ -1638,7 +1638,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8959"
NAME="AEN9027"
></A
><H3
><A
@ -1696,7 +1696,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8973"
NAME="AEN9041"
></A
><H3
><A
@ -1754,7 +1754,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8987"
NAME="AEN9055"
></A
><H3
><A
@ -1835,7 +1835,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9008"
NAME="AEN9076"
></A
><H3
><A
@ -1915,7 +1915,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9028"
NAME="AEN9096"
></A
><H3
><A
@ -2011,7 +2011,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9052"
NAME="AEN9120"
></A
><H3
><A
@ -2075,7 +2075,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9068"
NAME="AEN9136"
></A
><H3
><A
@ -2136,7 +2136,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9084"
NAME="AEN9152"
></A
><H3
><A
@ -2221,7 +2221,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9105"
NAME="AEN9173"
></A
><H3
><A
@ -2308,7 +2308,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9127"
NAME="AEN9195"
></A
><H3
><A
@ -2410,7 +2410,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9153"
NAME="AEN9221"
></A
><H3
><A
@ -2495,7 +2495,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9174"
NAME="AEN9242"
></A
><H3
><A
@ -2577,7 +2577,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9195"
NAME="AEN9263"
></A
><H3
><A
@ -2640,7 +2640,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9211"
NAME="AEN9279"
></A
><H3
><A
@ -2739,7 +2739,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9236"
NAME="AEN9304"
></A
><H3
><A
@ -2848,7 +2848,7 @@ to get the Prefix if any.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9265"
NAME="AEN9333"
></A
><H3
><A
@ -2934,7 +2934,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9288"
NAME="AEN9356"
></A
><H3
><A
@ -3043,7 +3043,7 @@ to get the Prefix if any.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9317"
NAME="AEN9385"
></A
><H3
><A
@ -3128,7 +3128,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9340"
NAME="AEN9408"
></A
><H3
><A
@ -3210,7 +3210,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9361"
NAME="AEN9429"
></A
><H3
><A
@ -3279,7 +3279,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9379"
NAME="AEN9447"
></A
><H3
><A
@ -3368,7 +3368,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9403"
NAME="AEN9471"
></A
><H3
><A
@ -3456,7 +3456,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9427"
NAME="AEN9495"
></A
><H3
><A
@ -3541,7 +3541,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9450"
NAME="AEN9518"
></A
><H3
><A
@ -3646,7 +3646,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9477"
NAME="AEN9545"
></A
><H3
><A
@ -3784,7 +3784,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9511"
NAME="AEN9579"
></A
><H3
><A
@ -3867,7 +3867,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9533"
NAME="AEN9601"
></A
><H3
><A
@ -3950,7 +3950,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9555"
NAME="AEN9623"
></A
><H3
><A
@ -4034,7 +4034,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9576"
NAME="AEN9644"
></A
><H3
><A
@ -4165,7 +4165,7 @@ it is possible to return NULL and have publicID set.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9609"
NAME="AEN9677"
></A
><H3
><A
@ -4232,7 +4232,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9626"
NAME="AEN9694"
></A
><H3
><A
@ -4315,7 +4315,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9648"
NAME="AEN9716"
></A
><H3
><A
@ -4382,7 +4382,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9666"
NAME="AEN9734"
></A
><H3
><A
@ -4457,7 +4457,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9686"
NAME="AEN9754"
></A
><H3
><A
@ -4535,7 +4535,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9709"
NAME="AEN9777"
></A
><H3
><A
@ -4674,7 +4674,7 @@ or XML_ATTRIBUTE_FIXED. </TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9746"
NAME="AEN9814"
></A
><H3
><A
@ -4763,7 +4763,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9770"
NAME="AEN9838"
></A
><H3
><A
@ -4850,7 +4850,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9793"
NAME="AEN9861"
></A
><H3
><A
@ -4953,7 +4953,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9820"
NAME="AEN9888"
></A
><H3
><A
@ -5097,7 +5097,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9858"
NAME="AEN9926"
></A
><H3
><A
@ -5164,7 +5164,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9876"
NAME="AEN9944"
></A
><H3
><A
@ -5262,7 +5262,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9902"
NAME="AEN9970"
></A
><H3
><A
@ -5365,7 +5365,7 @@ hierarchy.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9928"
NAME="AEN9996"
></A
><H3
><A
@ -5488,7 +5488,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9959"
NAME="AEN10027"
></A
><H3
><A
@ -5571,7 +5571,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN9981"
NAME="AEN10049"
></A
><H3
><A
@ -5650,7 +5650,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10000"
NAME="AEN10068"
></A
><H3
><A
@ -5728,7 +5728,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the value parsed (as an int)</TD
>the value parsed (as an int), 0 in case of error</TD
></TR
></TABLE
><P
@ -5738,7 +5738,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10023"
NAME="AEN10091"
></A
><H3
><A
@ -5839,7 +5839,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10047"
NAME="AEN10115"
></A
><H3
><A
@ -5913,7 +5913,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10066"
NAME="AEN10134"
></A
><H3
><A
@ -5999,7 +5999,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10087"
NAME="AEN10155"
></A
><H3
><A
@ -6069,7 +6069,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10105"
NAME="AEN10173"
></A
><H3
><A
@ -6194,7 +6194,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10139"
NAME="AEN10207"
></A
><H3
><A
@ -6296,7 +6296,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10168"
NAME="AEN10236"
></A
><H3
><A
@ -6386,7 +6386,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10192"
NAME="AEN10260"
></A
><H3
><A
@ -6457,7 +6457,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10212"
NAME="AEN10280"
></A
><H3
><A
@ -6522,7 +6522,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10229"
NAME="AEN10297"
></A
><H3
><A
@ -6604,7 +6604,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10248"
NAME="AEN10316"
></A
><H3
><A
@ -6687,7 +6687,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10270"
NAME="AEN10338"
></A
><H3
><A
@ -6772,7 +6772,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10293"
NAME="AEN10361"
></A
><H3
><A
@ -6855,7 +6855,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10315"
NAME="AEN10383"
></A
><H3
><A
@ -6940,7 +6940,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10338"
NAME="AEN10406"
></A
><H3
><A
@ -7035,7 +7035,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10360"
NAME="AEN10428"
></A
><H3
><A
@ -7100,7 +7100,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10377"
NAME="AEN10445"
></A
><H3
><A
@ -7165,7 +7165,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10394"
NAME="AEN10462"
></A
><H3
><A
@ -7274,7 +7274,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10422"
NAME="AEN10490"
></A
><H3
><A
@ -7300,7 +7300,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10427"
NAME="AEN10495"
></A
><H3
><A
@ -7326,7 +7326,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10432"
NAME="AEN10500"
></A
><H3
><A
@ -7352,7 +7352,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10437"
NAME="AEN10505"
></A
><H3
><A
@ -7378,7 +7378,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10442"
NAME="AEN10510"
></A
><H3
><A
@ -7561,7 +7561,7 @@ must deallocate it !</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10487"
NAME="AEN10555"
></A
><H3
><A
@ -7658,7 +7658,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10511"
NAME="AEN10579"
></A
><H3
><A
@ -7737,7 +7737,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10531"
NAME="AEN10599"
></A
><H3
><A
@ -7834,7 +7834,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN10555"
NAME="AEN10623"
></A
><H3
><A

File diff suppressed because it is too large Load Diff

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN5800"
NAME="AEN5868"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN5800"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN5803"
NAME="AEN5871"
></A
><H2
>Synopsis</H2
@ -809,7 +809,7 @@ HREF="gnome-xml-tree.html#XMLCHAR"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN5986"
NAME="AEN6054"
></A
><H2
>Description</H2
@ -819,14 +819,14 @@ NAME="AEN5986"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN5989"
NAME="AEN6057"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN5991"
NAME="AEN6059"
></A
><H3
><A
@ -920,7 +920,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6013"
NAME="AEN6081"
></A
><H3
><A
@ -1014,7 +1014,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6035"
NAME="AEN6103"
></A
><H3
><A
@ -1040,7 +1040,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6040"
NAME="AEN6108"
></A
><H3
><A
@ -1066,7 +1066,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6045"
NAME="AEN6113"
></A
><H3
><A
@ -1092,7 +1092,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6050"
NAME="AEN6118"
></A
><H3
><A
@ -1118,7 +1118,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6055"
NAME="AEN6123"
></A
><H3
><A
@ -1144,7 +1144,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6060"
NAME="AEN6128"
></A
><H3
><A
@ -1170,7 +1170,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6065"
NAME="AEN6133"
></A
><H3
><A
@ -1196,7 +1196,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6070"
NAME="AEN6138"
></A
><H3
><A
@ -1222,7 +1222,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6075"
NAME="AEN6143"
></A
><H3
><A
@ -1248,7 +1248,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6080"
NAME="AEN6148"
></A
><H3
><A
@ -1274,7 +1274,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6085"
NAME="AEN6153"
></A
><H3
><A
@ -1439,7 +1439,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6126"
NAME="AEN6194"
></A
><H3
><A
@ -1520,7 +1520,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6147"
NAME="AEN6215"
></A
><H3
><A
@ -1583,7 +1583,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6163"
NAME="AEN6231"
></A
><H3
><A
@ -1667,7 +1667,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6184"
NAME="AEN6252"
></A
><H3
><A
@ -1769,7 +1769,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6210"
NAME="AEN6278"
></A
><H3
><A
@ -1850,7 +1850,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6231"
NAME="AEN6299"
></A
><H3
><A
@ -1913,7 +1913,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6247"
NAME="AEN6315"
></A
><H3
><A
@ -2078,7 +2078,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6288"
NAME="AEN6356"
></A
><H3
><A
@ -2159,7 +2159,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6309"
NAME="AEN6377"
></A
><H3
><A
@ -2222,7 +2222,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6325"
NAME="AEN6393"
></A
><H3
><A
@ -2306,7 +2306,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6346"
NAME="AEN6414"
></A
><H3
><A
@ -2388,7 +2388,7 @@ of error.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6367"
NAME="AEN6435"
></A
><H3
><A
@ -2451,7 +2451,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6383"
NAME="AEN6451"
></A
><H3
><A
@ -2533,7 +2533,7 @@ of error.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6404"
NAME="AEN6472"
></A
><H3
><A
@ -2761,7 +2761,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6460"
NAME="AEN6528"
></A
><H3
><A
@ -2842,7 +2842,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6481"
NAME="AEN6549"
></A
><H3
><A
@ -2905,7 +2905,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6497"
NAME="AEN6565"
></A
><H3
><A
@ -2989,7 +2989,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6518"
NAME="AEN6586"
></A
><H3
><A
@ -3133,7 +3133,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6554"
NAME="AEN6622"
></A
><H3
><A
@ -3212,7 +3212,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6574"
NAME="AEN6642"
></A
><H3
><A
@ -3275,7 +3275,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6590"
NAME="AEN6658"
></A
><H3
><A
@ -3377,7 +3377,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6616"
NAME="AEN6684"
></A
><H3
><A
@ -3499,7 +3499,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6646"
NAME="AEN6714"
></A
><H3
><A
@ -3643,7 +3643,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6682"
NAME="AEN6750"
></A
><H3
><A
@ -3722,7 +3722,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6702"
NAME="AEN6770"
></A
><H3
><A
@ -3785,7 +3785,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6718"
NAME="AEN6786"
></A
><H3
><A
@ -3907,7 +3907,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6748"
NAME="AEN6816"
></A
><H3
><A
@ -4010,7 +4010,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6773"
NAME="AEN6841"
></A
><H3
><A
@ -4135,7 +4135,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6803"
NAME="AEN6871"
></A
><H3
><A
@ -4262,7 +4262,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6834"
NAME="AEN6902"
></A
><H3
><A
@ -4376,7 +4376,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6863"
NAME="AEN6931"
></A
><H3
><A
@ -4500,7 +4500,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6893"
NAME="AEN6961"
></A
><H3
><A
@ -4622,7 +4622,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6924"
NAME="AEN6992"
></A
><H3
><A
@ -4725,7 +4725,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6950"
NAME="AEN7018"
></A
><H3
><A
@ -4845,7 +4845,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6980"
NAME="AEN7048"
></A
><H3
><A
@ -4975,7 +4975,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7012"
NAME="AEN7080"
></A
><H3
><A
@ -5149,7 +5149,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7053"
NAME="AEN7121"
></A
><H3
><A
@ -5251,7 +5251,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7079"
NAME="AEN7147"
></A
><H3
><A
@ -5372,7 +5372,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7109"
NAME="AEN7177"
></A
><H3
><A
@ -5472,7 +5472,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7134"
NAME="AEN7202"
></A
><H3
><A
@ -5596,7 +5596,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7165"
NAME="AEN7233"
></A
><H3
><A
@ -5698,7 +5698,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7191"
NAME="AEN7259"
></A
><H3
><A
@ -5800,7 +5800,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7217"
NAME="AEN7285"
></A
><H3
><A
@ -5966,7 +5966,7 @@ receiving array and retry.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7255"
NAME="AEN7323"
></A
><H3
><A

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN7293"
NAME="AEN7361"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN7293"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN7296"
NAME="AEN7364"
></A
><H2
>Synopsis</H2
@ -187,7 +187,7 @@ HREF="gnome-xml-parser.html#XMLPARSERINPUTPTR"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7308"
NAME="AEN7376"
></A
><H2
>Description</H2
@ -197,14 +197,14 @@ NAME="AEN7308"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7311"
NAME="AEN7379"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN7313"
NAME="AEN7381"
></A
><H3
><A
@ -341,7 +341,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7318"
NAME="AEN7386"
></A
><H3
><A
@ -438,7 +438,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7341"
NAME="AEN7409"
></A
><H3
><A
@ -535,7 +535,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7364"
NAME="AEN7432"
></A
><H3
><A
@ -632,7 +632,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7387"
NAME="AEN7455"
></A
><H3
><A
@ -729,7 +729,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7410"
NAME="AEN7478"
></A
><H3
><A
@ -792,7 +792,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7426"
NAME="AEN7494"
></A
><H3
><A

View File

@ -103,7 +103,7 @@ ALIGN="right"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN10988"
NAME="AEN11079"
></A
><H2
>Name</H2
@ -111,7 +111,7 @@ NAME="AEN10988"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN10991"
NAME="AEN11082"
></A
><H2
>Synopsis</H2
@ -210,7 +210,7 @@ HREF="gnome-xml-xmlmemory.html#XMLMEMSTRDUPLOC"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN11012"
NAME="AEN11103"
></A
><H2
>Description</H2
@ -220,14 +220,14 @@ NAME="AEN11012"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN11015"
NAME="AEN11106"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN11017"
NAME="AEN11108"
></A
><H3
><A
@ -253,7 +253,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11022"
NAME="AEN11113"
></A
><H3
><A
@ -316,7 +316,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11038"
NAME="AEN11129"
></A
><H3
><A
@ -382,7 +382,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11055"
NAME="AEN11146"
></A
><H3
><A
@ -466,7 +466,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11076"
NAME="AEN11167"
></A
><H3
><A
@ -544,7 +544,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11096"
NAME="AEN11187"
></A
><H3
><A
@ -602,7 +602,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11111"
NAME="AEN11202"
></A
><H3
><A
@ -660,7 +660,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11126"
NAME="AEN11217"
></A
><H3
><A
@ -688,7 +688,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11132"
NAME="AEN11223"
></A
><H3
><A
@ -752,7 +752,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11148"
NAME="AEN11239"
></A
><H3
><A
@ -778,7 +778,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11153"
NAME="AEN11244"
></A
><H3
><A
@ -804,7 +804,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11158"
NAME="AEN11249"
></A
><H3
><A
@ -830,7 +830,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11163"
NAME="AEN11254"
></A
><H3
><A
@ -935,7 +935,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11188"
NAME="AEN11279"
></A
><H3
><A
@ -1052,7 +1052,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN11216"
NAME="AEN11307"
></A
><H3
><A

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN7881"
NAME="AEN7949"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN7881"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN7884"
NAME="AEN7952"
></A
><H2
>Synopsis</H2
@ -259,7 +259,7 @@ HREF="XMLXPATHCONTEXTPTR"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7918"
NAME="AEN7986"
></A
><H2
>Description</H2
@ -269,14 +269,14 @@ NAME="AEN7918"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7921"
NAME="AEN7989"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN7923"
NAME="AEN7991"
></A
><H3
><A
@ -302,7 +302,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7928"
NAME="AEN7996"
></A
><H3
><A
@ -328,7 +328,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7933"
NAME="AEN8001"
></A
><H3
><A
@ -354,7 +354,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7938"
NAME="AEN8006"
></A
><H3
><A
@ -380,7 +380,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7943"
NAME="AEN8011"
></A
><H3
><A
@ -406,7 +406,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7948"
NAME="AEN8016"
></A
><H3
><A
@ -432,7 +432,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7953"
NAME="AEN8021"
></A
><H3
><A
@ -526,7 +526,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7976"
NAME="AEN8044"
></A
><H3
><A
@ -605,7 +605,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN7995"
NAME="AEN8063"
></A
><H3
><A
@ -705,7 +705,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8020"
NAME="AEN8088"
></A
><H3
><A
@ -784,7 +784,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8039"
NAME="AEN8107"
></A
><H3
><A
@ -865,7 +865,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8060"
NAME="AEN8128"
></A
><H3
><A
@ -928,7 +928,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8076"
NAME="AEN8144"
></A
><H3
><A
@ -1031,7 +1031,7 @@ the caller has to free the object.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8102"
NAME="AEN8170"
></A
><H3
><A
@ -1094,7 +1094,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN8118"
NAME="AEN8186"
></A
><H3
><A

View File

@ -216,6 +216,7 @@
<ANCHOR id ="XMLCOPYNAMESPACELIST" href="gnome-xml/gnome-xml-tree.html#XMLCOPYNAMESPACELIST">
<ANCHOR id ="XMLSETPROP" href="gnome-xml/gnome-xml-tree.html#XMLSETPROP">
<ANCHOR id ="XMLGETPROP" href="gnome-xml/gnome-xml-tree.html#XMLGETPROP">
<ANCHOR id ="XMLGETNSPROP" href="gnome-xml/gnome-xml-tree.html#XMLGETNSPROP">
<ANCHOR id ="XMLSTRINGGETNODELIST" href="gnome-xml/gnome-xml-tree.html#XMLSTRINGGETNODELIST">
<ANCHOR id ="XMLSTRINGLENGETNODELIST" href="gnome-xml/gnome-xml-tree.html#XMLSTRINGLENGETNODELIST">
<ANCHOR id ="XMLNODELISTGETSTRING" href="gnome-xml/gnome-xml-tree.html#XMLNODELISTGETSTRING">
@ -226,6 +227,7 @@
<ANCHOR id ="XMLNODEGETCONTENT" href="gnome-xml/gnome-xml-tree.html#XMLNODEGETCONTENT">
<ANCHOR id ="XMLNODEGETLANG" href="gnome-xml/gnome-xml-tree.html#XMLNODEGETLANG">
<ANCHOR id ="XMLNODESETLANG" href="gnome-xml/gnome-xml-tree.html#XMLNODESETLANG">
<ANCHOR id ="XMLNODEGETBASE" href="gnome-xml/gnome-xml-tree.html#XMLNODEGETBASE">
<ANCHOR id ="XMLREMOVEPROP" href="gnome-xml/gnome-xml-tree.html#XMLREMOVEPROP">
<ANCHOR id ="XMLREMOVENODE" href="gnome-xml/gnome-xml-tree.html#XMLREMOVENODE">
<ANCHOR id ="XMLBUFFERWRITECHAR" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERWRITECHAR">
@ -495,6 +497,7 @@
<ANCHOR id ="XMLDEBUGDUMPNODE" href="gnome-xml/gnome-xml-debugxml.html#XMLDEBUGDUMPNODE">
<ANCHOR id ="XMLDEBUGDUMPNODELIST" href="gnome-xml/gnome-xml-debugxml.html#XMLDEBUGDUMPNODELIST">
<ANCHOR id ="XMLDEBUGDUMPDOCUMENT" href="gnome-xml/gnome-xml-debugxml.html#XMLDEBUGDUMPDOCUMENT">
<ANCHOR id ="XMLDEBUGDUMPENTITIES" href="gnome-xml/gnome-xml-debugxml.html#XMLDEBUGDUMPENTITIES">
<ANCHOR id ="GNOME-XML-XMLMEMORY" href="gnome-xml/gnome-xml-xmlmemory.html">
<ANCHOR id ="NO-DEBUG-MEMORY" href="gnome-xml/gnome-xml-xmlmemory.html#NO-DEBUG-MEMORY">
<ANCHOR id ="XMLFREE" href="gnome-xml/gnome-xml-xmlmemory.html#XMLFREE">

Binary file not shown.

View File

@ -10,6 +10,7 @@
#include <stdio.h>
#include <stdlib.h>
#include "parser.h"
#include "xlink.h"
#ifndef __XML_SAX_H__
#define __XML_SAX_H__

View File

@ -16,4 +16,5 @@ extern void xmlDebugDumpOneNode(FILE *output, xmlNodePtr node, int depth);
extern void xmlDebugDumpNode(FILE *output, xmlNodePtr node, int depth);
extern void xmlDebugDumpNodeList(FILE *output, xmlNodePtr node, int depth);
extern void xmlDebugDumpDocument(FILE *output, xmlDocPtr doc);
extern void xmlDebugDumpEntities(FILE *output, xmlDocPtr doc);
#endif /* __DEBUG_XML__ */

View File

@ -112,6 +112,7 @@ typedef struct xmlAttribute {
xmlAttributeDefault def; /* the default */
const xmlChar *defaultValue;/* or the default value */
xmlEnumerationPtr tree; /* or the enumeration tree if any */
const xmlChar *prefix; /* the namespace prefix if any */
} xmlAttribute;
typedef xmlAttribute *xmlAttributePtr;
@ -462,6 +463,9 @@ xmlAttrPtr xmlSetProp (xmlNodePtr node,
const xmlChar *value);
xmlChar * xmlGetProp (xmlNodePtr node,
const xmlChar *name);
xmlChar * xmlGetNsProp (xmlNodePtr node,
const xmlChar *name,
const xmlChar *namespace);
xmlNodePtr xmlStringGetNodeList (xmlDocPtr doc,
const xmlChar *value);
xmlNodePtr xmlStringLenGetNodeList (xmlDocPtr doc,
@ -484,6 +488,8 @@ xmlChar * xmlNodeGetContent (xmlNodePtr cur);
xmlChar * xmlNodeGetLang (xmlNodePtr cur);
void xmlNodeSetLang (xmlNodePtr cur,
const xmlChar *lang);
xmlChar * xmlNodeGetBase (xmlDocPtr doc,
xmlNodePtr cur);
/*
* Removing content.

175
include/libxml/xlink.h Normal file
View File

@ -0,0 +1,175 @@
/*
* xlink.h : interfaces to the hyperlinks detection module
*
* See Copyright for the status of this software.
*
* Related specification: http://www.w3.org/TR/xlink
* http://www.w3.org/HTML/
* and XBase
*
* Daniel.Veillard@w3.org
*/
#ifndef __XML_XLINK_H__
#define __XML_XLINK_H__
#include "tree.h"
/**
* Various defines for the various Link properties.
*
* NOTE: the link detection layer will try to resolve QName expansion
* of namespaces, if "foo" is the prefix for "http://foo.com/"
* then the link detection layer will expand role="foo:myrole"
* to "http://foo.com/:myrole"
* NOTE: the link detection layer will expand URI-Refences found on
* href attributes by using the base mechanism if found.
*/
typedef xmlChar *xlinkHRef;
typedef xmlChar *xlinkRole;
typedef xmlChar *xlinkTitle;
typedef enum {
XLINK_TYPE_NONE = 0,
XLINK_TYPE_SIMPLE,
XLINK_TYPE_EXTENDED,
XLINK_TYPE_EXTENDED_SET
} xlinkType;
typedef enum {
XLINK_SHOW_NONE = 0,
XLINK_SHOW_NEW,
XLINK_SHOW_EMBED,
XLINK_SHOW_REPLACE
} xlinkShow;
typedef enum {
XLINK_ACTUATE_NONE = 0,
XLINK_ACTUATE_AUTO,
XLINK_ACTUATE_ONREQUEST
} xlinkActuate;
/**
* xlinkNodeDetectFunc:
* @ctx: user data pointer
* @node: the node to check
*
* This is the prototype for the link detection routine
* It calls the default link detection callbacks upon link detection.
*/
typedef void
(*xlinkNodeDetectFunc) (void *ctx,
xmlNodePtr node);
/**
* The link detection module interract with the upper layers using
* a set of callback registered at parsing time.
*/
/**
* xlinkSimpleLinkFunk:
* @ctx: user data pointer
* @node: the node carrying the link
* @href: the target of the link
* @role: the role string
* @title: the link title
*
* This is the prototype for a simple link detection callback.
*/
typedef void
(*xlinkSimpleLinkFunk) (void *ctx,
xmlNodePtr node,
const xlinkHRef href,
const xlinkRole role,
const xlinkTitle title);
/**
* xlinkExtendedLinkFunk:
* @ctx: user data pointer
* @node: the node carrying the link
* @nbLocators: the number of locators detected on the link
* @hrefs: pointer to the array of locator hrefs
* @roles: pointer to the array of locator roles
* @nbArcs: the number of arcs detected on the link
* @from: pointer to the array of source roles found on the arcs
* @to: pointer to the array of target roles found on the arcs
* @show: array of values for the show attributes found on the arcs
* @actuate: array of values for the actuate attributes found on the arcs
* @nbTitles: the number of titles detected on the link
* @title: array of titles detected on the link
* @langs: array of xml:lang values for the titles
*
* This is the prototype for a extended link detection callback.
*/
typedef void
(*xlinkExtendedLinkFunk)(void *ctx,
xmlNodePtr node,
int nbLocators,
const xlinkHRef *hrefs,
const xlinkRole *roles,
int nbArcs,
const xlinkRole *from,
const xlinkRole *to,
xlinkShow *show,
xlinkActuate *actuate,
int nbTitles,
const xlinkTitle *titles,
const xmlChar **langs);
/**
* xlinkExtendedLinkSetFunk:
* @ctx: user data pointer
* @node: the node carrying the link
* @nbLocators: the number of locators detected on the link
* @hrefs: pointer to the array of locator hrefs
* @roles: pointer to the array of locator roles
* @nbTitles: the number of titles detected on the link
* @title: array of titles detected on the link
* @langs: array of xml:lang values for the titles
*
* This is the prototype for a extended link set detection callback.
*/
typedef void
(*xlinkExtendedLinkSetFunk) (void *ctx,
xmlNodePtr node,
int nbLocators,
const xlinkHRef *hrefs,
const xlinkRole *roles,
int nbTitles,
const xlinkTitle *titles,
const xmlChar **langs);
/**
* This is the structure containing a set of Links detection callbacks
*
* There is no default xlink callbacks, if one want to get link
* recognition activated, those call backs must be provided before parsing.
*/
typedef struct xlinkHandler {
xlinkSimpleLinkFunk simple;
xlinkExtendedLinkFunk extended;
xlinkExtendedLinkSetFunk set;
} xlinkHandler;
typedef xlinkHandler *xlinkHandlerPtr;
/**
* the default detection routine, can be overriden, they call the default
* detection callbacks.
*/
xlinkNodeDetectFunc xlinkGetDefaultDetect (void);
void xlinkSetDefaultDetect (xlinkNodeDetectFunc func);
/**
* Routines to set/get the default handlers.
*/
xlinkHandlerPtr xlinkGetDefaultHandler (void);
void xlinkSetDefaultHandler (xlinkHandlerPtr handler);
/*
* Link detection module itself.
*/
xlinkType xlinkIsLink (xmlDocPtr doc,
xmlNodePtr node);
#endif /* __XML_XLINK_H__ */

1217
parser.c

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
./test/HTML/reg4.html:10: error: Unexpected end tag : P
./test/HTML/reg4.html:10: error: Unexpected end tag : p
</p>
^

View File

@ -1,12 +1,12 @@
./test/HTML/test3.html:6: error: Unexpected end tag : P
./test/HTML/test3.html:6: error: Unexpected end tag : p
</a><p><hr></p>
^
./test/HTML/test3.html:13: error: Unexpected end tag : P
./test/HTML/test3.html:13: error: Unexpected end tag : p
<p><hr></p>
^
./test/HTML/test3.html:27: error: Opening and ending tag mismatch: H4 and B
./test/HTML/test3.html:27: error: Opening and ending tag mismatch: h4 and b
<h4><b>Links</h4></b>
^
./test/HTML/test3.html:27: error: Unexpected end tag : B
./test/HTML/test3.html:27: error: Unexpected end tag : b
<h4><b>Links</h4></b>
^

View File

@ -38,6 +38,7 @@
#include "debugXML.h"
static int debug = 0;
static int debugent = 0;
static int copy = 0;
static int recovery = 0;
static int noent = 0;
@ -177,6 +178,8 @@ void parseAndPrintFile(char *filename) {
} else
xmlDebugDumpDocument(stdout, doc);
}
if (debugent)
xmlDebugDumpEntities(stdout, doc);
/*
* free it.
@ -214,6 +217,8 @@ void parseAndPrintBuffer(xmlChar *buf) {
xmlDocDump(stdout, doc);
} else
xmlDebugDumpDocument(stdout, doc);
if (debugent)
xmlDebugDumpEntities(stdout, doc);
/*
* free it.
@ -228,6 +233,8 @@ int main(int argc, char **argv) {
for (i = 1; i < argc ; i++) {
if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
debug++;
if ((!strcmp(argv[i], "-debugent")) || (!strcmp(argv[i], "--debugent")))
debugent++;
else if ((!strcmp(argv[i], "-copy")) || (!strcmp(argv[i], "--copy")))
copy++;
else if ((!strcmp(argv[i], "-recover")) ||
@ -267,10 +274,11 @@ int main(int argc, char **argv) {
}
}
if (files == 0) {
printf("Usage : %s [--debug] [--copy] [--recover] [--noent] [--noout] [--valid] [--repeat] XMLfiles ...\n",
printf("Usage : %s [--debug] [--debugent] [--copy] [--recover] [--noent] [--noout] [--valid] [--repeat] XMLfiles ...\n",
argv[0]);
printf("\tParse the XML files and output the result of the parsing\n");
printf("\t--debug : dump a debug tree of the in-memory document\n");
printf("\t--debugent : debug the entities defined in the document\n");
printf("\t--copy : used to test the internal copy implementation\n");
printf("\t--recover : output what is parsable on broken XmL documents\n");
printf("\t--noent : substitute entity references by their value\n");

171
tree.c
View File

@ -37,6 +37,7 @@ int xmlIndentTreeOutput = 1;
xmlBufferAllocationScheme xmlBufferAllocScheme = XML_BUFFER_ALLOC_EXACT;
static int xmlCompressMode = 0;
static int xmlCheckDTD = 1;
#define UPDATE_LAST_CHILD(n) if ((n) != NULL) { \
xmlNodePtr ulccur = (n)->childs; \
@ -1632,12 +1633,12 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
xmlNodePtr prev;
if (parent == NULL) {
fprintf(stderr, "xmladdChild : parent == NULL\n");
fprintf(stderr, "xmlAddChild : parent == NULL\n");
return(NULL);
}
if (cur == NULL) {
fprintf(stderr, "xmladdChild : child == NULL\n");
fprintf(stderr, "xmlAddChild : child == NULL\n");
return(NULL);
}
@ -2191,6 +2192,59 @@ xmlNodeGetLang(xmlNodePtr cur) {
return(NULL);
}
/**
* xmlNodeGetBase:
* @doc: the document the node pertains to
* @cur: the node being checked
*
* Searches for the BASE URL. The code should work on both XML
* and HTML document even if base mechanisms are completely different.
*
* Returns a pointer to the base URL, or NULL if not found
* It's up to the caller to free the memory.
*/
xmlChar *
xmlNodeGetBase(xmlDocPtr doc, xmlNodePtr cur) {
xmlChar *base;
if ((cur == NULL) && (doc == NULL))
return(NULL);
if (doc == NULL) doc = cur->doc;
if ((doc != NULL) && (doc->type == XML_HTML_DOCUMENT_NODE)) {
cur = doc->root;
while ((cur != NULL) && (cur->name != NULL)) {
if (cur->type != XML_ELEMENT_NODE) {
cur = cur->next;
continue;
}
if ((!xmlStrcmp(cur->name, BAD_CAST "html")) ||
(!xmlStrcmp(cur->name, BAD_CAST "HTML"))) {
cur = cur->childs;
continue;
}
if ((!xmlStrcmp(cur->name, BAD_CAST "head")) ||
(!xmlStrcmp(cur->name, BAD_CAST "HEAD"))) {
cur = cur->childs;
continue;
}
if ((!xmlStrcmp(cur->name, BAD_CAST "base")) ||
(!xmlStrcmp(cur->name, BAD_CAST "BASE"))) {
base = xmlGetProp(cur, BAD_CAST "href");
if (base != NULL) return(base);
return(xmlGetProp(cur, BAD_CAST "HREF"));
}
}
return(NULL);
}
while (cur != NULL) {
base = xmlGetProp(cur, BAD_CAST "xml:base");
if (base != NULL)
return(base);
cur = cur->parent;
}
return(NULL);
}
/**
* xmlNodeGetContent:
* @cur: the node being read
@ -2565,6 +2619,7 @@ xmlNsPtr
xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace) {
xmlNsPtr cur;
if ((node == NULL) || (nameSpace == NULL)) return(NULL);
while (node != NULL) {
cur = node->nsDef;
while (cur != NULL) {
@ -2577,6 +2632,8 @@ xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace) {
}
node = node->parent;
}
#if 0
/* Removed support for old namespaces */
if (doc != NULL) {
cur = doc->oldNs;
while (cur != NULL) {
@ -2586,6 +2643,7 @@ xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace) {
cur = cur->next;
}
}
#endif
return(NULL);
}
@ -2603,6 +2661,7 @@ xmlNsPtr
xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const xmlChar *href) {
xmlNsPtr cur;
if ((node == NULL) || (href == NULL)) return(NULL);
while (node != NULL) {
cur = node->nsDef;
while (cur != NULL) {
@ -2613,6 +2672,8 @@ xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const xmlChar *href) {
}
node = node->parent;
}
#if 0
/* Removed support for old namespaces */
if (doc != NULL) {
cur = doc->oldNs;
while (cur != NULL) {
@ -2622,6 +2683,7 @@ xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const xmlChar *href) {
cur = cur->next;
}
}
#endif
return(NULL);
}
@ -2632,13 +2694,22 @@ xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const xmlChar *href) {
*
* Search and get the value of an attribute associated to a node
* This does the entity substitution.
* This function looks in DTD attribute declaration for #FIXED or
* default declaration values unless DTD use has been turned off.
*
* Returns the attribute value or NULL if not found.
* It's up to the caller to free the memory.
*/
xmlChar *
xmlGetProp(xmlNodePtr node, const xmlChar *name) {
xmlAttrPtr prop = node->properties;
xmlAttrPtr prop;
xmlDocPtr doc;
if ((node == NULL) || (name == NULL)) return(NULL);
/*
* Check on the properties attached to the node
*/
prop = node->properties;
while (prop != NULL) {
if (!xmlStrcmp(prop->name, name)) {
xmlChar *ret;
@ -2649,6 +2720,83 @@ xmlGetProp(xmlNodePtr node, const xmlChar *name) {
}
prop = prop->next;
}
if (!xmlCheckDTD) return(NULL);
/*
* Check if there is a default declaration in the internal
* or external subsets
*/
doc = node->doc;
if (doc != NULL) {
xmlAttributePtr attrDecl;
if (doc->intSubset != NULL) {
attrDecl = xmlGetDtdAttrDesc(doc->intSubset, node->name, name);
if ((attrDecl == NULL) && (doc->extSubset != NULL))
attrDecl = xmlGetDtdAttrDesc(doc->extSubset, node->name, name);
return(xmlStrdup(attrDecl->defaultValue));
}
}
return(NULL);
}
/**
* xmlGetNsProp:
* @node: the node
* @name: the attribute name
* @namespace: the URI of the namespace
*
* Search and get the value of an attribute associated to a node
* This attribute has to be anchored in the namespace specified.
* This does the entity substitution.
* This function looks in DTD attribute declaration for #FIXED or
* default declaration values unless DTD use has been turned off.
*
* Returns the attribute value or NULL if not found.
* It's up to the caller to free the memory.
*/
xmlChar *
xmlGetNsProp(xmlNodePtr node, const xmlChar *name, const xmlChar *namespace) {
xmlAttrPtr prop = node->properties;
xmlDocPtr doc;
xmlNsPtr ns;
if (namespace == NULL)
return(xmlGetProp(node, name));
while (prop != NULL) {
if ((!xmlStrcmp(prop->name, name)) &&
(prop->ns != NULL) && (!xmlStrcmp(prop->ns->href, namespace))) {
xmlChar *ret;
ret = xmlNodeListGetString(node->doc, prop->val, 1);
if (ret == NULL) return(xmlStrdup((xmlChar *)""));
return(ret);
}
prop = prop->next;
}
if (!xmlCheckDTD) return(NULL);
/*
* Check if there is a default declaration in the internal
* or external subsets
*/
doc = node->doc;
if (doc != NULL) {
xmlAttributePtr attrDecl;
if (doc->intSubset != NULL) {
attrDecl = xmlGetDtdAttrDesc(doc->intSubset, node->name, name);
if ((attrDecl == NULL) && (doc->extSubset != NULL))
attrDecl = xmlGetDtdAttrDesc(doc->extSubset, node->name, name);
if (attrDecl->prefix != NULL) {
/*
* The DTD declaration only allows a prefix search
*/
ns = xmlSearchNs(doc, node, attrDecl->prefix);
if ((ns != NULL) && (!xmlStrcmp(ns->href, namespace)))
return(xmlStrdup(attrDecl->defaultValue));
}
}
}
return(NULL);
}
@ -2748,6 +2896,7 @@ xmlBufferCreate(void) {
}
ret->use = 0;
ret->size = BASE_BUFFER_SIZE;
ret->alloc = xmlBufferAllocScheme;
ret->content = (xmlChar *) xmlMalloc(ret->size * sizeof(xmlChar));
if (ret->content == NULL) {
fprintf(stderr, "xmlBufferCreate : out of memory!\n");
@ -2775,8 +2924,9 @@ xmlBufferCreateSize(size_t size) {
return(NULL);
}
ret->use = 0;
ret->alloc = xmlBufferAllocScheme;
ret->size = (size ? size+2 : 0); /* +1 for ending null */
if(ret->size){
if (ret->size){
ret->content = (xmlChar *) xmlMalloc(ret->size * sizeof(xmlChar));
if (ret->content == NULL) {
fprintf(stderr, "xmlBufferCreate : out of memory!\n");
@ -2973,7 +3123,8 @@ xmlBufferResize(xmlBufferPtr buf, int size)
* @str: the xmlChar string
* @len: the number of xmlChar to add
*
* Add a string range to an XML buffer.
* Add a string range to an XML buffer. if len == -1, the lenght of
* str is recomputed.
*/
void
xmlBufferAdd(xmlBufferPtr buf, const xmlChar *str, int len) {
@ -2983,6 +3134,11 @@ xmlBufferAdd(xmlBufferPtr buf, const xmlChar *str, int len) {
fprintf(stderr, "xmlBufferAdd: str == NULL\n");
return;
}
if (len < -1) {
fprintf(stderr, "xmlBufferAdd: len < 0\n");
return;
}
if (len == 0) return;
/* CJN What's this for??? */
l = xmlStrlen(str);
@ -3655,7 +3811,10 @@ xmlSaveFile(const char *filename, xmlDocPtr cur) {
if (zoutput == NULL) {
#endif
output = fopen(filename, "w");
if (output == NULL) return(-1);
if (output == NULL) {
xmlBufferFree(buf);
return(-1);
}
#ifdef HAVE_ZLIB_H
}

6
tree.h
View File

@ -112,6 +112,7 @@ typedef struct xmlAttribute {
xmlAttributeDefault def; /* the default */
const xmlChar *defaultValue;/* or the default value */
xmlEnumerationPtr tree; /* or the enumeration tree if any */
const xmlChar *prefix; /* the namespace prefix if any */
} xmlAttribute;
typedef xmlAttribute *xmlAttributePtr;
@ -462,6 +463,9 @@ xmlAttrPtr xmlSetProp (xmlNodePtr node,
const xmlChar *value);
xmlChar * xmlGetProp (xmlNodePtr node,
const xmlChar *name);
xmlChar * xmlGetNsProp (xmlNodePtr node,
const xmlChar *name,
const xmlChar *namespace);
xmlNodePtr xmlStringGetNodeList (xmlDocPtr doc,
const xmlChar *value);
xmlNodePtr xmlStringLenGetNodeList (xmlDocPtr doc,
@ -484,6 +488,8 @@ xmlChar * xmlNodeGetContent (xmlNodePtr cur);
xmlChar * xmlNodeGetLang (xmlNodePtr cur);
void xmlNodeSetLang (xmlNodePtr cur,
const xmlChar *lang);
xmlChar * xmlNodeGetBase (xmlDocPtr doc,
xmlNodePtr cur);
/*
* Removing content.

17
valid.c
View File

@ -760,6 +760,8 @@ xmlAddAttributeDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *elem,
xmlAttributePtr ret, cur;
xmlAttributeTablePtr table;
xmlElementPtr elemDef;
xmlChar *rname;
xmlChar *ns;
int i;
if (dtd == NULL) {
@ -820,13 +822,21 @@ xmlAddAttributeDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *elem,
return(NULL);
}
/*
* Split the full name into a namespace prefix and the tag name
*/
rname = xmlSplitQName(name, &ns);
/*
* Validity Check:
* Search the DTD for previous declarations of the ATTLIST
*/
for (i = 0;i < table->nb_attributes;i++) {
cur = table->table[i];
if ((!xmlStrcmp(cur->name, name)) && (!xmlStrcmp(cur->elem, elem))) {
if ((ns != NULL) && (cur->prefix == NULL)) continue;
if ((ns == NULL) && (cur->prefix != NULL)) continue;
if ((!xmlStrcmp(cur->name, rname)) && (!xmlStrcmp(cur->elem, elem)) &&
((ns == NULL) || (!xmlStrcmp(cur->prefix, ns)))) {
/*
* The attribute is already defined in this Dtd.
*/
@ -862,7 +872,8 @@ xmlAddAttributeDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *elem,
* fill the structure.
*/
ret->type = type;
ret->name = xmlStrdup(name);
ret->name = rname;
ret->prefix = ns;
ret->elem = xmlStrdup(elem);
ret->def = def;
ret->tree = tree;
@ -902,6 +913,8 @@ xmlFreeAttribute(xmlAttributePtr attr) {
xmlFree((xmlChar *) attr->name);
if (attr->defaultValue != NULL)
xmlFree((xmlChar *) attr->defaultValue);
if (attr->prefix != NULL)
xmlFree((xmlChar *) attr->prefix);
memset(attr, -1, sizeof(xmlAttribute));
xmlFree(attr);
}

187
xlink.c Normal file
View File

@ -0,0 +1,187 @@
/*
* xlink.c : implementation of the hyperlinks detection module
* This version supports both XML XLinks and HTML simple links
*
* See Copyright for the status of this software.
*
* Daniel.Veillard@w3.org
*/
#ifdef WIN32
#define HAVE_FCNTL_H
#include <io.h>
#else
#include "config.h"
#endif
#include <stdio.h>
#include <string.h> /* for memset() only */
#ifdef HAVE_CTYPE_H
#include <ctype.h>
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_ZLIB_H
#include <zlib.h>
#endif
#include "xmlmemory.h"
#include "tree.h"
#include "parser.h"
#include "valid.h"
#include "xlink.h"
#define XLINK_NAMESPACE (BAD_CAST "http://www.w3.org/1999/xlink/namespace/")
#define XHTML_NAMESPACE (BAD_CAST "http://www.w3.org/1999/xhtml/")
/****************************************************************
* *
* Default setting and related functions *
* *
****************************************************************/
xlinkHandlerPtr xlinkDefaultHandler = NULL;
xlinkNodeDetectFunc xlinkDefaultDetect = NULL;
/**
* xlinkGetDefaultHandler:
*
* Get the default xlink handler.
*
* Returns the current xlinkHandlerPtr value.
*/
xlinkHandlerPtr
xlinkGetDefaultHandler(void) {
return(xlinkDefaultHandler);
}
/**
* xlinkGetDefaultHandler:
* @handler: the new value for the xlink handler block
*
* Set the default xlink handlers
*/
void
xlinkSetDefaultHandler(xlinkHandlerPtr handler) {
xlinkDefaultHandler = handler;
}
/**
* xlinkGetDefaultDetect:
*
* Get the default xlink detection routine
*
* Returns the current function or NULL;
*/
xlinkNodeDetectFunc
xlinkGetDefaultDetect (void) {
return(xlinkDefaultDetect);
}
/**
* xlinkSetDefaultDetect:
* @func: pointer to the new detction routine.
*
* Set the default xlink detection routine
*/
void
xlinkSetDefaultDetect (xlinkNodeDetectFunc func) {
xlinkDefaultDetect = func;
}
/****************************************************************
* *
* The detection routines *
* *
****************************************************************/
/**
* xlinkIsLink:
* @doc: the document containing the node
* @node: the node pointer itself
*
* Check whether the given node carries the attributes needed
* to be a link element (or is one of the linking elements issued
* from the (X)HTML DtDs).
* This routine don't try to do full checking of the link validity
* but tries to detect and return the appropriate link type.
*
* Returns the xlinkType of the node (XLINK_TYPE_NONE if there is no
* link detected.
*/
xlinkType
xlinkIsLink (xmlDocPtr doc, xmlNodePtr node) {
xmlChar *type = NULL, *role = NULL;
xlinkType ret = XLINK_TYPE_NONE;
if (node == NULL) return(XLINK_TYPE_NONE);
if (doc == NULL) doc = node->doc;
if ((doc != NULL) && (doc->type == XML_HTML_DOCUMENT_NODE)) {
/*
* This is an HTML document.
*/
} else if ((node->ns != NULL) &&
(!xmlStrcmp(node->ns->href, XHTML_NAMESPACE))) {
/*
* !!!! We really need an IS_XHTML_ELEMENT function from HTMLtree.h @@@
*/
/*
* This is an XHTML element within an XML document
* Check whether it's one of the element able to carry links
* and in that case if it holds the attributes.
*/
}
/*
* We don't prevent a-priori having XML Linking constructs on
* XHTML elements
*/
type = xmlGetNsProp(node, BAD_CAST"type", XLINK_NAMESPACE);
if (type != NULL) {
if (xmlStrcmp(type, BAD_CAST "simple")) {
ret = XLINK_TYPE_SIMPLE;
} if (xmlStrcmp(type, BAD_CAST "extended")) {
role = xmlGetNsProp(node, BAD_CAST "role", XLINK_NAMESPACE);
if (role != NULL) {
xmlNsPtr xlink;
xlink = xmlSearchNs(doc, node, XLINK_NAMESPACE);
if (xlink == NULL) {
/* Humm, fallback method */
if (!xmlStrcmp(role, BAD_CAST"xlink:external-linkset"))
ret = XLINK_TYPE_EXTENDED_SET;
} else {
xmlChar buf[200];
#ifdef HAVE_SNPRINTF
snprintf((char *) buf, 199, "%s:external-linkset",
(char *) xlink->prefix);
#else
sprintf((char *) buf, "%s:external-linkset",
(char *) xlink->prefix);
#endif
if (!xmlStrcmp(role, buf))
ret = XLINK_TYPE_EXTENDED_SET;
}
}
ret = XLINK_TYPE_EXTENDED;
}
}
if (type != NULL) xmlFree(type);
if (role != NULL) xmlFree(role);
return(ret);
}

175
xlink.h Normal file
View File

@ -0,0 +1,175 @@
/*
* xlink.h : interfaces to the hyperlinks detection module
*
* See Copyright for the status of this software.
*
* Related specification: http://www.w3.org/TR/xlink
* http://www.w3.org/HTML/
* and XBase
*
* Daniel.Veillard@w3.org
*/
#ifndef __XML_XLINK_H__
#define __XML_XLINK_H__
#include "tree.h"
/**
* Various defines for the various Link properties.
*
* NOTE: the link detection layer will try to resolve QName expansion
* of namespaces, if "foo" is the prefix for "http://foo.com/"
* then the link detection layer will expand role="foo:myrole"
* to "http://foo.com/:myrole"
* NOTE: the link detection layer will expand URI-Refences found on
* href attributes by using the base mechanism if found.
*/
typedef xmlChar *xlinkHRef;
typedef xmlChar *xlinkRole;
typedef xmlChar *xlinkTitle;
typedef enum {
XLINK_TYPE_NONE = 0,
XLINK_TYPE_SIMPLE,
XLINK_TYPE_EXTENDED,
XLINK_TYPE_EXTENDED_SET
} xlinkType;
typedef enum {
XLINK_SHOW_NONE = 0,
XLINK_SHOW_NEW,
XLINK_SHOW_EMBED,
XLINK_SHOW_REPLACE
} xlinkShow;
typedef enum {
XLINK_ACTUATE_NONE = 0,
XLINK_ACTUATE_AUTO,
XLINK_ACTUATE_ONREQUEST
} xlinkActuate;
/**
* xlinkNodeDetectFunc:
* @ctx: user data pointer
* @node: the node to check
*
* This is the prototype for the link detection routine
* It calls the default link detection callbacks upon link detection.
*/
typedef void
(*xlinkNodeDetectFunc) (void *ctx,
xmlNodePtr node);
/**
* The link detection module interract with the upper layers using
* a set of callback registered at parsing time.
*/
/**
* xlinkSimpleLinkFunk:
* @ctx: user data pointer
* @node: the node carrying the link
* @href: the target of the link
* @role: the role string
* @title: the link title
*
* This is the prototype for a simple link detection callback.
*/
typedef void
(*xlinkSimpleLinkFunk) (void *ctx,
xmlNodePtr node,
const xlinkHRef href,
const xlinkRole role,
const xlinkTitle title);
/**
* xlinkExtendedLinkFunk:
* @ctx: user data pointer
* @node: the node carrying the link
* @nbLocators: the number of locators detected on the link
* @hrefs: pointer to the array of locator hrefs
* @roles: pointer to the array of locator roles
* @nbArcs: the number of arcs detected on the link
* @from: pointer to the array of source roles found on the arcs
* @to: pointer to the array of target roles found on the arcs
* @show: array of values for the show attributes found on the arcs
* @actuate: array of values for the actuate attributes found on the arcs
* @nbTitles: the number of titles detected on the link
* @title: array of titles detected on the link
* @langs: array of xml:lang values for the titles
*
* This is the prototype for a extended link detection callback.
*/
typedef void
(*xlinkExtendedLinkFunk)(void *ctx,
xmlNodePtr node,
int nbLocators,
const xlinkHRef *hrefs,
const xlinkRole *roles,
int nbArcs,
const xlinkRole *from,
const xlinkRole *to,
xlinkShow *show,
xlinkActuate *actuate,
int nbTitles,
const xlinkTitle *titles,
const xmlChar **langs);
/**
* xlinkExtendedLinkSetFunk:
* @ctx: user data pointer
* @node: the node carrying the link
* @nbLocators: the number of locators detected on the link
* @hrefs: pointer to the array of locator hrefs
* @roles: pointer to the array of locator roles
* @nbTitles: the number of titles detected on the link
* @title: array of titles detected on the link
* @langs: array of xml:lang values for the titles
*
* This is the prototype for a extended link set detection callback.
*/
typedef void
(*xlinkExtendedLinkSetFunk) (void *ctx,
xmlNodePtr node,
int nbLocators,
const xlinkHRef *hrefs,
const xlinkRole *roles,
int nbTitles,
const xlinkTitle *titles,
const xmlChar **langs);
/**
* This is the structure containing a set of Links detection callbacks
*
* There is no default xlink callbacks, if one want to get link
* recognition activated, those call backs must be provided before parsing.
*/
typedef struct xlinkHandler {
xlinkSimpleLinkFunk simple;
xlinkExtendedLinkFunk extended;
xlinkExtendedLinkSetFunk set;
} xlinkHandler;
typedef xlinkHandler *xlinkHandlerPtr;
/**
* the default detection routine, can be overriden, they call the default
* detection callbacks.
*/
xlinkNodeDetectFunc xlinkGetDefaultDetect (void);
void xlinkSetDefaultDetect (xlinkNodeDetectFunc func);
/**
* Routines to set/get the default handlers.
*/
xlinkHandlerPtr xlinkGetDefaultHandler (void);
void xlinkSetDefaultHandler (xlinkHandlerPtr handler);
/*
* Link detection module itself.
*/
xlinkType xlinkIsLink (xmlDocPtr doc,
xmlNodePtr node);
#endif /* __XML_XLINK_H__ */

View File

@ -140,8 +140,9 @@ xmlMallocLoc(int size, const char * file, int line)
p = (MEMHDR *) malloc(RESERVE_SIZE+size);
if (!p) {
fprintf(stderr, "xmlMalloc : Out of free space\n");
xmlMemoryDump();
fprintf(stderr, "xmlMalloc : Out of free space\n");
xmlMemoryDump();
return(NULL);
}
p->mh_tag = MEMTAG;
p->mh_number = ++block;

View File

@ -1774,6 +1774,7 @@ xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, xmlAttrPtr cur) {
* @cur: the current attribute in the traversal
*
* Traversal function for the "attribute" direction
* TODO: support DTD inherited default attributes
*
* Returns the next element following that axis
*/