Added XPath code (http://www.w3.org/TR/xpath), updated HTML support and docs, Daniel

This commit is contained in:
Daniel Veillard 1999-07-15 14:24:29 +00:00
parent d79d787092
commit 1566d3a91b
43 changed files with 9353 additions and 1200 deletions

View File

@ -1,3 +1,16 @@
Thu Jul 15 16:17:16 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org>
* configure.in: upgraded to version 1.4.0
* xpath.c, xpath.h, testXPath.c, makefile.am: added code for the XPath
draft from W3C. Will be used by XPointer, Xlink, XSL, and possibly
XML query language, see http://www.w3.org/TR/xpath for more details.
* parser.c, parser.h: added CHAR* related string functions for XPath
* HTMLparser.[ch], HTMLtree.c: a bit of cleanup on entities.
* doc/gnome-xml.sgml, doc/html/* : added XPath and HTML documentation,
rebuild the docs.
* Makefile.am, test/XPath/*, result/XPath/*: added an XPathtests target
and regression testing capabilities for XPath.
Mon Jul 12 12:36:39 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org>
* parser.c, HTMLparser.c: applied patch from John Ellson <ellson@lucent.com>

View File

@ -456,6 +456,7 @@ htmlEntityDesc html40EntitiesTable[] = {
*/
{ 34, "quot", "quotation mark = APL quote, U+0022 ISOnum" },
{ 38, "amp", "ampersand, U+0026 ISOnum" },
{ 39, "apos", "single quote" },
{ 60, "lt", "less-than sign, U+003C ISOnum" },
{ 62, "gt", "greater-than sign, U+003E ISOnum" },

View File

@ -37,8 +37,10 @@ htmlDtdDump(xmlBufferPtr buf, xmlDocPtr doc) {
if (cur->ExternalID != NULL) {
xmlBufferWriteChar(buf, " PUBLIC ");
xmlBufferWriteQuotedString(buf, cur->ExternalID);
xmlBufferWriteChar(buf, " ");
xmlBufferWriteQuotedString(buf, cur->SystemID);
if (cur->SystemID != NULL) {
xmlBufferWriteChar(buf, " ");
xmlBufferWriteQuotedString(buf, cur->SystemID);
}
} else if (cur->SystemID != NULL) {
xmlBufferWriteChar(buf, " SYSTEM ");
xmlBufferWriteQuotedString(buf, cur->SystemID);
@ -127,7 +129,6 @@ htmlNodeListDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur) {
*/
static void
htmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur) {
int i;
htmlElemDescPtr info;
if (cur == NULL) {

View File

@ -6,7 +6,7 @@ INCLUDES = -I@srcdir@ @CORBA_CFLAGS@ $(VERSION_FLAGS)
VERSION_FLAGS = -DLIBXML_VERSION=\"@LIBXML_VERSION@\"
noinst_PROGRAMS=tester testSAX testHTML
noinst_PROGRAMS=tester testSAX testHTML testXPath
bin_SCRIPTS=xml-config
@ -21,9 +21,10 @@ libxml_la_SOURCES = \
error.c \
parser.c \
HTMLparser.c \
HTMLtree.c \
debugXML.c \
tree.c \
HTMLtree.c \
xpath.c \
valid.c
xmlincdir = $(includedir)/gnome-xml
@ -32,10 +33,12 @@ xmlinc_HEADERS = \
encoding.h \
parser.h \
HTMLparser.h \
HTMLtree.h \
parserInternals.h \
debugXML.h \
xml-error.h \
tree.h \
xpath.h \
xmlIO.h \
valid.h
@ -57,9 +60,14 @@ testHTML_LDFLAGS =
testHTML_DEPENDENCIES = $(DEPS)
testHTML_LDADD= $(LDADDS)
testXPath_SOURCES=testXPath.c
testXPath_LDFLAGS =
testXPath_DEPENDENCIES = $(DEPS)
testXPath_LDADD= $(LDADDS)
check-local: tests
testall : tests SVGtests SAXtests
testall : tests SVGtests SAXtests XPathtests
tests: HTMLtests XMLtests
HTMLtests : testHTML
@ -110,6 +118,35 @@ SVGtests : tester
rm result.`basename $$i` result2.`basename $$i` ; \
fi ; fi ; done)
XPathtests : testXPath
@(DIR=`pwd`; cd $(srcdir) ; \
for i in test/XPath/expr/* ; do \
if [ ! -d $$i ] ; then \
if [ ! -f result/XPath/expr/`basename $$i` ] ; then \
echo New test file `basename $$i` ; \
$$DIR/testXPath -f --expr $$i > result/XPath/expr/`basename $$i` ; \
else \
echo Testing `basename $$i` ; \
$$DIR/testXPath -f --expr $$i > result.`basename $$i` ; \
diff result/XPath/expr/`basename $$i` result.`basename $$i` ; \
rm result.`basename $$i` ; \
fi ; fi ; done)
@(DIR=`pwd`; cd $(srcdir) ; \
for i in test/XPath/docs/* ; do \
if [ ! -d $$i ] ; then \
name=`basename $$i`; \
for j in test/XPath/tests/$$name* ; do \
if [ ! -d $$j ] ; then \
if [ ! -f result/XPath/tests/`basename $$j` ] ; then \
echo New test file `basename $$i` ; \
$$DIR/testXPath -f -i $$i $$j > result/XPath/tests/`basename $$j` ; \
else \
echo Testing `basename $$j` ; \
$$DIR/testXPath -f -i $$i $$j > result.`basename $$j` ; \
diff result/XPath/tests/`basename $$j` result.`basename $$j` ; \
rm result.`basename $$j` ; \
fi ; fi ; done ; fi ; done)
SAXtests : testSAX
@(DIR=`pwd`; cd $(srcdir) ; \
for i in test/* ; do \
@ -124,20 +161,6 @@ SAXtests : testSAX
rm result.`basename $$i` ; \
fi ; fi ; done)
#tests : tester
# @(for i in $(srcdir)/test/* ; do \
# if [ ! -d $$i ] ; then \
# j=`echo $$i | sed -e 's,^.*/,,'`; \
# if [ ! -f $(srcdir)/result/$$j ] ; then \
# echo New test file $$j ; \
# ./tester $$i > $(srcdir)/result/$$j ; \
# else \
# echo Testing $$j ; \
# ./tester $$i > result.$$j ; \
# diff $(srcdir)/result/$$j result.$$j ; \
# rm result.$$j ; \
# fi ; fi ; done)
## Put `exec' in the name because this should be installed by
## `install-exec', not `install-data'.

View File

@ -4,7 +4,7 @@ AC_INIT(entities.h)
AM_CONFIG_HEADER(config.h)
LIBXML_MAJOR_VERSION=1
LIBXML_MINOR_VERSION=3
LIBXML_MINOR_VERSION=4
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

@ -113,7 +113,7 @@ void xmlDebugDumpAttrList(FILE *output, xmlAttrPtr attr, int depth) {
}
}
void xmlDebugDumpNode(FILE *output, xmlNodePtr node, int depth) {
void xmlDebugDumpOneNode(FILE *output, xmlNodePtr node, int depth) {
int i;
char shift[100];
@ -187,6 +187,10 @@ void xmlDebugDumpNode(FILE *output, xmlNodePtr node, int depth) {
if (ent != NULL)
xmlDebugDumpEntity(output, ent, depth + 1);
}
}
void xmlDebugDumpNode(FILE *output, xmlNodePtr node, int depth) {
xmlDebugDumpOneNode(output, node, depth);
if (node->childs != NULL)
xmlDebugDumpNodeList(output, node->childs, depth + 1);
}

View File

@ -12,6 +12,7 @@
extern void xmlDebugDumpString(FILE *output, const CHAR *str);
extern void xmlDebugDumpAttr(FILE *output, xmlAttrPtr attr, int depth);
extern void xmlDebugDumpAttrList(FILE *output, xmlAttrPtr attr, int depth);
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);

View File

@ -4,6 +4,10 @@
<!entity entities SYSTEM "sgml/entities.sgml">
<!entity error SYSTEM "sgml/xml-error.sgml">
<!entity valid SYSTEM "sgml/valid.sgml">
<!entity xpath SYSTEM "sgml/xpath.sgml">
<!entity SAX SYSTEM "sgml/SAX.sgml">
<!entity HTMLparser SYSTEM "sgml/HTMLparser.sgml">
<!entity HTMLtree SYSTEM "sgml/HTMLtree.sgml">
<!entity parserInternals SYSTEM "sgml/parserInternals.sgml">
]>
@ -15,11 +19,15 @@
<chapter id="libxml">
<title>Gnome XML Library</title>
&parser; The parser general interfaces
&SAX; The parser SAX interfaces
&tree; Manipulation the tree generated by the parser
&entities; Routines for handling entities
&valid; All the stuff defined in DTDs
&error; Callbacks in case of parsing error
&parserInternals; Access to the parser internal routines
&HTMLparser; parsing HTML and generating a tree
&HTMLtree; printing HTML trees
&xpath; A on-going XPath implementation
</chapter>
</book>

View File

@ -83,6 +83,21 @@ HREF="gnome-xml-xml-error.html"
HREF="gnome-xml-parserinternals.html"
>parserInternals</A
> &#8212; </DT
><DT
><A
HREF="gnome-xml-htmlparser.html"
>HTMLparser</A
> &#8212; </DT
><DT
><A
HREF="gnome-xml-htmltree.html"
>HTMLtree</A
> &#8212; </DT
><DT
><A
HREF="gnome-xml-xpath.html"
>xpath</A
> &#8212; </DT
></DL
></DD
></DL

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN3522"
NAME="AEN3575"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN3522"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN3525"
NAME="AEN3578"
></A
><H2
>Synopsis</H2
@ -260,13 +260,27 @@ HREF="gnome-xml-tree.html#XMLDOCPTR"
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
> *name);
const <A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
>* <A
HREF="gnome-xml-entities.html#XMLENCODEENTITIES"
>xmlEncodeEntities</A
> (<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> doc,
const <A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
> *input);
<A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
>* <A
HREF="gnome-xml-entities.html#XMLENCODEENTITIES"
>xmlEncodeEntities</A
> (<A
HREF="gnome-xml-entities.html#XMLENCODEENTITIESREENTRANT"
>xmlEncodeEntitiesReentrant</A
> (<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> doc,
@ -316,7 +330,7 @@ HREF="gnome-xml-entities.html#XMLENTITIESTABLEPTR"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3574"
NAME="AEN3631"
></A
><H2
>Description</H2
@ -326,14 +340,14 @@ NAME="AEN3574"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3577"
NAME="AEN3634"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN3579"
NAME="AEN3636"
></A
><H3
><A
@ -349,7 +363,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_INTERNAL_GENERAL_ENTITY 1</PRE
>#define XML_INTERNAL_GENERAL_ENTITY</PRE
></TD
></TR
></TABLE
@ -359,7 +373,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3584"
NAME="AEN3641"
></A
><H3
><A
@ -375,7 +389,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_EXTERNAL_GENERAL_PARSED_ENTITY 2</PRE
>#define XML_EXTERNAL_GENERAL_PARSED_ENTITY</PRE
></TD
></TR
></TABLE
@ -385,7 +399,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3589"
NAME="AEN3646"
></A
><H3
><A
@ -401,7 +415,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_EXTERNAL_GENERAL_UNPARSED_ENTITY 3</PRE
>#define XML_EXTERNAL_GENERAL_UNPARSED_ENTITY</PRE
></TD
></TR
></TABLE
@ -411,7 +425,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3594"
NAME="AEN3651"
></A
><H3
><A
@ -427,7 +441,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_INTERNAL_PARAMETER_ENTITY 4</PRE
>#define XML_INTERNAL_PARAMETER_ENTITY</PRE
></TD
></TR
></TABLE
@ -437,7 +451,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3599"
NAME="AEN3656"
></A
><H3
><A
@ -453,7 +467,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_EXTERNAL_PARAMETER_ENTITY 5</PRE
>#define XML_EXTERNAL_PARAMETER_ENTITY</PRE
></TD
></TR
></TABLE
@ -463,7 +477,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3604"
NAME="AEN3661"
></A
><H3
><A
@ -479,7 +493,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_INTERNAL_PREDEFINED_ENTITY 6</PRE
>#define XML_INTERNAL_PREDEFINED_ENTITY</PRE
></TD
></TR
></TABLE
@ -489,33 +503,20 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3609"
NAME="AEN3666"
></A
><H3
><A
NAME="XMLENTITYPTR"
></A
>xmlEntityPtr</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>typedef xmlEntity *xmlEntityPtr;</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3614"
NAME="AEN3670"
></A
><H3
><A
@ -531,7 +532,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_MIN_ENTITIES_TABLE 32</PRE
>#define XML_MIN_ENTITIES_TABLE</PRE
></TD
></TR
></TABLE
@ -541,33 +542,20 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3619"
NAME="AEN3675"
></A
><H3
><A
NAME="XMLENTITIESTABLEPTR"
></A
>xmlEntitiesTablePtr</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>typedef xmlEntitiesTable *xmlEntitiesTablePtr;</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3624"
NAME="AEN3679"
></A
><H3
><A
@ -637,7 +625,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -654,7 +642,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -671,7 +659,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity type XML_xxx_yyy_ENTITY</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -688,7 +676,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity external ID if available</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -705,7 +693,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity system ID if available</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -722,7 +710,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity content</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -732,7 +720,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3664"
NAME="AEN3719"
></A
><H3
><A
@ -802,7 +790,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -819,7 +807,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -836,7 +824,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity type XML_xxx_yyy_ENTITY</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -853,7 +841,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity external ID if available</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -870,7 +858,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity system ID if available</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -887,7 +875,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity content</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -897,7 +885,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3704"
NAME="AEN3759"
></A
><H3
><A
@ -953,7 +941,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -968,7 +956,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>NULL if not, othervise the entity</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -978,7 +966,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3725"
NAME="AEN3780"
></A
><H3
><A
@ -1040,7 +1028,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document referencing the entity</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1057,7 +1045,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1072,7 +1060,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>A pointer to the entity structure or NULL if not found.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1082,7 +1070,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3751"
NAME="AEN3806"
></A
><H3
><A
@ -1143,7 +1131,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document referencing the entity</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1160,7 +1148,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1175,7 +1163,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>A pointer to the entity structure or NULL if not found.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1185,7 +1173,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3777"
NAME="AEN3832"
></A
><H3
><A
@ -1201,10 +1189,10 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
><A
>const <A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
>* xmlEncodeEntities (<A
>* xmlEncodeEntities (<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> doc,
@ -1222,6 +1210,119 @@ and non ASCII values with their entities and CharRef counterparts.</P
>TODO !!!! Once moved to UTF-8 internal encoding, the encoding of non-ascii
get erroneous.</P
><P
>TODO This routine is not reentrant, the interface
should not be modified though.</P
><P
>People must migrate their code to xmlEncodeEntitiesReentrant !</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>doc</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>input</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3861"
></A
><H3
><A
NAME="XMLENCODEENTITIESREENTRANT"
></A
>xmlEncodeEntitiesReentrant ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
>* xmlEncodeEntitiesReentrant (<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> doc,
const <A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
> *input);</PRE
></TD
></TR
></TABLE
><P
>Do a global encoding of a string, replacing the predefined entities
and non ASCII values with their entities and CharRef counterparts.
Contrary to xmlEncodeEntities, this routine is reentrant, and result
must be deallocated.</P
><P
>TODO !!!! Once moved to UTF-8 internal encoding, the encoding of non-ascii
get erroneous.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
@ -1249,7 +1350,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document containing the string</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1266,7 +1367,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> A string to convert to XML.</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1281,7 +1382,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>A newly allocated string with the substitution done.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1291,7 +1392,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3804"
NAME="AEN3888"
></A
><H3
><A
@ -1342,7 +1443,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the xmlEntitiesTablePtr just created or NULL in case of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1352,7 +1453,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3820"
NAME="AEN3904"
></A
><H3
><A
@ -1408,7 +1509,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An entity table</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1423,7 +1524,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the new xmlEntitiesTablePtr or NULL in case of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1433,7 +1534,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3841"
NAME="AEN3925"
></A
><H3
><A
@ -1486,7 +1587,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An entity table</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1496,7 +1597,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3857"
NAME="AEN3941"
></A
><H3
><A
@ -1553,7 +1654,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An XML buffer.</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1570,7 +1671,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An entity table</TD
>&nbsp;</TD
></TR
></TABLE
><P

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,671 @@
<HTML
><HEAD
><TITLE
>HTMLtree</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Gnome XML Library Reference Manual"
HREF="book1.html"><LINK
REL="UP"
TITLE="Gnome XML Library"
HREF="libxml.html"><LINK
REL="PREVIOUS"
TITLE="HTMLparser"
HREF="gnome-xml-htmlparser.html"><LINK
REL="NEXT"
TITLE="xpath"
HREF="gnome-xml-xpath.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Gnome XML Library Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="gnome-xml-htmlparser.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="book1.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libxml.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="gnome-xml-xpath.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>HTMLtree</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN6690"
></A
><H2
>Name</H2
>HTMLtree &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN6693"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
#define <A
HREF="gnome-xml-htmltree.html#HTML-TEXT-NODE"
>HTML_TEXT_NODE</A
>
#define <A
HREF="gnome-xml-htmltree.html#HTML-ENTITY-REF-NODE"
>HTML_ENTITY_REF_NODE</A
>
#define <A
HREF="gnome-xml-htmltree.html#HTML-COMMENT-NODE"
>HTML_COMMENT_NODE</A
>
void <A
HREF="gnome-xml-htmltree.html#HTMLDOCDUMPMEMORY"
>htmlDocDumpMemory</A
> (<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> cur,
<A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
> **mem,
int *size);
void <A
HREF="gnome-xml-htmltree.html#HTMLDOCDUMP"
>htmlDocDump</A
> (<GTKDOCLINK
HREF="FILE"
>FILE</GTKDOCLINK
> *f,
<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> cur);
int <A
HREF="gnome-xml-htmltree.html#HTMLSAVEFILE"
>htmlSaveFile</A
> (const char *filename,
<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> cur);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6707"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6710"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN6712"
></A
><H3
><A
NAME="HTML-TEXT-NODE"
></A
>HTML_TEXT_NODE</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define HTML_TEXT_NODE XML_TEXT_NODE</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6717"
></A
><H3
><A
NAME="HTML-ENTITY-REF-NODE"
></A
>HTML_ENTITY_REF_NODE</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define HTML_ENTITY_REF_NODE XML_ENTITY_REF_NODE</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6722"
></A
><H3
><A
NAME="HTML-COMMENT-NODE"
></A
>HTML_COMMENT_NODE</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define HTML_COMMENT_NODE XML_COMMENT_NODE</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6727"
></A
><H3
><A
NAME="HTMLDOCDUMPMEMORY"
></A
>htmlDocDumpMemory ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void htmlDocDumpMemory (<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> cur,
<A
HREF="gnome-xml-tree.html#CHAR"
>CHAR</A
> **mem,
int *size);</PRE
></TD
></TR
></TABLE
><P
>Dump an HTML document in memory and return the CHAR * and it's size.
It's up to the caller to free the memory.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>cur</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>mem</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> OUT: the memory pointer</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>size</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> OUT: the memory lenght</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6752"
></A
><H3
><A
NAME="HTMLDOCDUMP"
></A
>htmlDocDump ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void htmlDocDump (<GTKDOCLINK
HREF="FILE"
>FILE</GTKDOCLINK
> *f,
<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> cur);</PRE
></TD
></TR
></TABLE
><P
>Dump an HTML document to an open FILE.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>f</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the FILE*</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>cur</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN6773"
></A
><H3
><A
NAME="HTMLSAVEFILE"
></A
>htmlSaveFile ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>int htmlSaveFile (const char *filename,
<A
HREF="gnome-xml-tree.html#XMLDOCPTR"
>xmlDocPtr</A
> cur);</PRE
></TD
></TR
></TABLE
><P
>Dump an HTML document to a file.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>filename</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the filename</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>cur</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the document</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><I
CLASS="EMPHASIS"
>Returns</I
> :</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the number of byte written or -1 in case of failure.</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="gnome-xml-htmlparser.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="book1.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libxml.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="gnome-xml-xpath.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>HTMLparser</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>xpath</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -115,7 +115,7 @@ SIZE="3"
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN3883"
NAME="AEN3967"
></A
><H2
>Name</H2
@ -123,7 +123,7 @@ NAME="AEN3883"
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN3886"
NAME="AEN3970"
></A
><H2
>Synopsis</H2
@ -377,7 +377,7 @@ HREF="gnome-xml-valid.html#XMLATTRIBUTETABLEPTR"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3953"
NAME="AEN4037"
></A
><H2
>Description</H2
@ -387,14 +387,14 @@ NAME="AEN3953"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN3956"
NAME="AEN4040"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN3958"
NAME="AEN4042"
></A
><H3
><A
@ -410,7 +410,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_MIN_NOTATION_TABLE 32</PRE
>#define XML_MIN_NOTATION_TABLE</PRE
></TD
></TR
></TABLE
@ -420,33 +420,20 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3963"
NAME="AEN4047"
></A
><H3
><A
NAME="XMLNOTATIONTABLEPTR"
></A
>xmlNotationTablePtr</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>typedef xmlNotationTable *xmlNotationTablePtr;</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3968"
NAME="AEN4051"
></A
><H3
><A
@ -462,7 +449,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_MIN_ELEMENT_TABLE 32</PRE
>#define XML_MIN_ELEMENT_TABLE</PRE
></TD
></TR
></TABLE
@ -472,33 +459,20 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3973"
NAME="AEN4056"
></A
><H3
><A
NAME="XMLELEMENTTABLEPTR"
></A
>xmlElementTablePtr</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>typedef xmlElementTable *xmlElementTablePtr;</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3978"
NAME="AEN4060"
></A
><H3
><A
@ -514,7 +488,7 @@ CELLPADDING="6"
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define XML_MIN_ATTRIBUTE_TABLE 32</PRE
>#define XML_MIN_ATTRIBUTE_TABLE</PRE
></TD
></TR
></TABLE
@ -524,33 +498,20 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3983"
NAME="AEN4065"
></A
><H3
><A
NAME="XMLATTRIBUTETABLEPTR"
></A
>xmlAttributeTablePtr</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>typedef xmlAttributeTable *xmlAttributeTablePtr;</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN3988"
NAME="AEN4069"
></A
><H3
><A
@ -618,7 +579,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the DTD</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -635,7 +596,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -652,7 +613,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the public identifier or NULL</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -669,7 +630,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the system identifier or NULL</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -684,7 +645,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>NULL if not, othervise the entity</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -694,7 +655,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4024"
NAME="AEN4105"
></A
><H3
><A
@ -750,7 +711,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> A notation table</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -765,7 +726,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the new xmlNotationTablePtr or NULL in case of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -775,7 +736,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4045"
NAME="AEN4126"
></A
><H3
><A
@ -828,7 +789,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An notation table</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -838,7 +799,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4061"
NAME="AEN4142"
></A
><H3
><A
@ -895,7 +856,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the XML buffer output</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -912,7 +873,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> A notation table</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -922,7 +883,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4082"
NAME="AEN4163"
></A
><H3
><A
@ -979,7 +940,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the subelement name or NULL</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -996,7 +957,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the type of element content decl</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1011,7 +972,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>NULL if not, othervise the new element content structure</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1021,7 +982,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4107"
NAME="AEN4188"
></A
><H3
><A
@ -1077,7 +1038,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An element content pointer.</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1092,7 +1053,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the new xmlElementContentPtr or NULL in case of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1102,7 +1063,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4128"
NAME="AEN4209"
></A
><H3
><A
@ -1155,7 +1116,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the element content tree to free</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1165,7 +1126,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4144"
NAME="AEN4225"
></A
><H3
><A
@ -1230,7 +1191,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the DTD</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1247,7 +1208,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the entity name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1264,7 +1225,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the element type</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1281,7 +1242,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the element content tree or NULL</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1296,7 +1257,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>NULL if not, othervise the entity</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1306,7 +1267,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4179"
NAME="AEN4260"
></A
><H3
><A
@ -1362,7 +1323,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An element table</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1377,7 +1338,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the new xmlElementTablePtr or NULL in case of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1387,7 +1348,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4200"
NAME="AEN4281"
></A
><H3
><A
@ -1440,7 +1401,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An element table</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1450,7 +1411,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4216"
NAME="AEN4297"
></A
><H3
><A
@ -1507,7 +1468,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the XML buffer output</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1524,7 +1485,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An element table</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1534,7 +1495,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4237"
NAME="AEN4318"
></A
><H3
><A
@ -1590,7 +1551,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the enumeration name or NULL</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1605,8 +1566,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the xmlEnumerationPtr just created or NULL in case
of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1616,7 +1576,7 @@ of error.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4258"
NAME="AEN4339"
></A
><H3
><A
@ -1669,7 +1629,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the tree to free.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1679,7 +1639,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4274"
NAME="AEN4355"
></A
><H3
><A
@ -1735,7 +1695,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the tree to copy.</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1750,8 +1710,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the xmlEnumerationPtr just created or NULL in case
of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1761,7 +1720,7 @@ of error.</TD
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4295"
NAME="AEN4376"
></A
><H3
><A
@ -1835,7 +1794,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> pointer to the DTD</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1852,7 +1811,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the element name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1869,7 +1828,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the attribute name</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1886,7 +1845,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the attribute type</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1903,7 +1862,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the attribute default type</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1920,7 +1879,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the attribute default value</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1937,7 +1896,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> if it's an enumeration, the associated list</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -1952,7 +1911,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>NULL if not, othervise the entity</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -1962,7 +1921,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4344"
NAME="AEN4425"
></A
><H3
><A
@ -2018,7 +1977,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An attribute table</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -2033,7 +1992,7 @@ CLASS="EMPHASIS"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>the new xmlAttributeTablePtr or NULL in case of error.</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -2043,7 +2002,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4365"
NAME="AEN4446"
></A
><H3
><A
@ -2096,7 +2055,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An attribute table</TD
>&nbsp;</TD
></TR
></TABLE
><P
@ -2106,7 +2065,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4381"
NAME="AEN4462"
></A
><H3
><A
@ -2163,7 +2122,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> the XML buffer output</TD
>&nbsp;</TD
></TR
><TR
><TD
@ -2180,7 +2139,7 @@ CLASS="PARAMETER"
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
> An attribute table</TD
>&nbsp;</TD
></TR
></TABLE
><P

View File

@ -0,0 +1,473 @@
<HTML
><HEAD
><TITLE
>xml-error</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.33"><LINK
REL="HOME"
TITLE="Gnome XML Library Reference Manual"
HREF="book1.html"><LINK
REL="UP"
TITLE="Gnome XML Library"
HREF="libxml.html"><LINK
REL="PREVIOUS"
TITLE="valid"
HREF="gnome-xml-valid.html"><LINK
REL="NEXT"
TITLE="parserInternals"
HREF="gnome-xml-parserinternals.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TH
COLSPAN="4"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="5"
>Gnome XML Library Reference Manual</FONT
></TH
></TR
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="gnome-xml-valid.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="book1.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libxml.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="gnome-xml-parserinternals.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
></TABLE
></DIV
><H1
>xml-error</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN4488"
></A
><H2
>Name</H2
>xml-error &#8212; </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN4491"
></A
><H2
>Synopsis</H2
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="SYNOPSIS"
>&#13;
void <A
HREF="gnome-xml-xml-error.html#XMLPARSERERROR"
>xmlParserError</A
> (void *ctx,
const char *msg,
...);
void <A
HREF="gnome-xml-xml-error.html#XMLPARSERWARNING"
>xmlParserWarning</A
> (void *ctx,
const char *msg,
...);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN4496"
></A
><H2
>Description</H2
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN4499"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN4501"
></A
><H3
><A
NAME="XMLPARSERERROR"
></A
>xmlParserError ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void xmlParserError (void *ctx,
const char *msg,
...);</PRE
></TD
></TR
></TABLE
><P
>Display and format an error messages, gives file, line, position and
extra parameters.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ctx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>msg</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>...</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4524"
></A
><H3
><A
NAME="XMLPARSERWARNING"
></A
>xmlParserWarning ()</H3
><TABLE
BORDER="0"
BGCOLOR="#D6E8FF"
WIDTH="100%"
CELLPADDING="6"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>void xmlParserWarning (void *ctx,
const char *msg,
...);</PRE
></TD
></TR
></TABLE
><P
>Display and format a warning messages, gives file, line, position and
extra parameters.</P
><P
></P
><DIV
CLASS="INFORMALTABLE"
><P
></P
><TABLE
BORDER="0"
WIDTH="100%"
BGCOLOR="#FFD0D0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>ctx</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>msg</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="20%"
ALIGN="RIGHT"
VALIGN="TOP"
><TT
CLASS="PARAMETER"
><I
>...</I
></TT
>&nbsp;:</TD
><TD
WIDTH="80%"
ALIGN="LEFT"
VALIGN="TOP"
>&nbsp;</TD
></TR
></TABLE
><P
></P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><BR><BR><TABLE
WIDTH="100%"
BORDER="0"
BGCOLOR="#000000"
CELLPADDING="1"
CELLSPACING="0"
><TR
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="left"
><A
HREF="gnome-xml-valid.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>&#60;&#60;&#60; Previous Page</B
></FONT
></A
></TD
><TD
WIDTH="25%"
BGCOLOR="#0000C0"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="book1.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Home</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#00C000"
ALIGN="center"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
><A
HREF="libxml.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Up</B
></FONT
></A
></B
></FONT
></TD
><TD
WIDTH="25%"
BGCOLOR="#C00000"
ALIGN="right"
><A
HREF="gnome-xml-parserinternals.html"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>Next Page &#62;&#62;&#62;</B
></FONT
></A
></TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="left"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>valid</B
></FONT
></TD
><TD
COLSPAN="2"
ALIGN="right"
><FONT
COLOR="#FFFFFF"
SIZE="3"
><B
>parserInternals</B
></FONT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

View File

@ -35,11 +35,15 @@
<ANCHOR id ="HASINTERNALSUBSETSAXFUNC" href="gnome-xml/gnome-xml-parser.html#HASINTERNALSUBSETSAXFUNC">
<ANCHOR id ="HASEXTERNALSUBSETSAXFUNC" href="gnome-xml/gnome-xml-parser.html#HASEXTERNALSUBSETSAXFUNC">
<ANCHOR id ="XMLSAXHANDLERPTR" href="gnome-xml/gnome-xml-parser.html#XMLSAXHANDLERPTR">
<ANCHOR id ="XMLPARSERVERSION" href="gnome-xml/gnome-xml-parser.html#XMLPARSERVERSION">
<ANCHOR id ="XMLDEFAULTSAXLOCATOR" href="gnome-xml/gnome-xml-parser.html#XMLDEFAULTSAXLOCATOR">
<ANCHOR id ="XMLDEFAULTSAXHANDLER" href="gnome-xml/gnome-xml-parser.html#XMLDEFAULTSAXHANDLER">
<ANCHOR id ="HTMLDEFAULTSAXHANDLER" href="gnome-xml/gnome-xml-parser.html#HTMLDEFAULTSAXHANDLER">
<ANCHOR id ="XMLSTRDUP" href="gnome-xml/gnome-xml-parser.html#XMLSTRDUP">
<ANCHOR id ="XMLSTRNDUP" href="gnome-xml/gnome-xml-parser.html#XMLSTRNDUP">
<ANCHOR id ="XMLSTRSUB" href="gnome-xml/gnome-xml-parser.html#XMLSTRSUB">
<ANCHOR id ="XMLSTRCHR" href="gnome-xml/gnome-xml-parser.html#XMLSTRCHR">
<ANCHOR id ="XMLSTRSTR" href="gnome-xml/gnome-xml-parser.html#XMLSTRSTR">
<ANCHOR id ="XMLSTRCMP" href="gnome-xml/gnome-xml-parser.html#XMLSTRCMP">
<ANCHOR id ="XMLSTRNCMP" href="gnome-xml/gnome-xml-parser.html#XMLSTRNCMP">
<ANCHOR id ="XMLSTRLEN" href="gnome-xml/gnome-xml-parser.html#XMLSTRLEN">
@ -67,6 +71,7 @@
<ANCHOR id ="XMLPARSERFINDNODEINFOINDEX" href="gnome-xml/gnome-xml-parser.html#XMLPARSERFINDNODEINFOINDEX">
<ANCHOR id ="XMLPARSERADDNODEINFO" href="gnome-xml/gnome-xml-parser.html#XMLPARSERADDNODEINFO">
<ANCHOR id ="XMLDEFAULTSAXHANDLERINIT" href="gnome-xml/gnome-xml-parser.html#XMLDEFAULTSAXHANDLERINIT">
<ANCHOR id ="HTMLDEFAULTSAXHANDLERINIT" href="gnome-xml/gnome-xml-parser.html#HTMLDEFAULTSAXHANDLERINIT">
<ANCHOR id ="GNOME-XML-TREE" href="gnome-xml/gnome-xml-tree.html">
<ANCHOR id ="XMLELEMENTTYPE" href="gnome-xml/gnome-xml-tree.html#XMLELEMENTTYPE">
<ANCHOR id ="CHAR" href="gnome-xml/gnome-xml-tree.html#CHAR">
@ -176,6 +181,7 @@
<ANCHOR id ="XMLGETDOCENTITY" href="gnome-xml/gnome-xml-entities.html#XMLGETDOCENTITY">
<ANCHOR id ="XMLGETDTDENTITY" href="gnome-xml/gnome-xml-entities.html#XMLGETDTDENTITY">
<ANCHOR id ="XMLENCODEENTITIES" href="gnome-xml/gnome-xml-entities.html#XMLENCODEENTITIES">
<ANCHOR id ="XMLENCODEENTITIESREENTRANT" href="gnome-xml/gnome-xml-entities.html#XMLENCODEENTITIESREENTRANT">
<ANCHOR id ="XMLCREATEENTITIESTABLE" href="gnome-xml/gnome-xml-entities.html#XMLCREATEENTITIESTABLE">
<ANCHOR id ="XMLCOPYENTITIESTABLE" href="gnome-xml/gnome-xml-entities.html#XMLCOPYENTITIESTABLE">
<ANCHOR id ="XMLFREEENTITIESTABLE" href="gnome-xml/gnome-xml-entities.html#XMLFREEENTITIESTABLE">
@ -288,3 +294,42 @@
<ANCHOR id ="NODEPOP" href="gnome-xml/gnome-xml-parserinternals.html#NODEPOP">
<ANCHOR id ="INPUTPUSH" href="gnome-xml/gnome-xml-parserinternals.html#INPUTPUSH">
<ANCHOR id ="INPUTPOP" href="gnome-xml/gnome-xml-parserinternals.html#INPUTPOP">
<ANCHOR id ="GNOME-XML-HTMLPARSER" href="gnome-xml/gnome-xml-htmlparser.html">
<ANCHOR id ="HTMLPARSERCTXT" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSERCTXT">
<ANCHOR id ="HTMLPARSERCTXTPTR" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSERCTXTPTR">
<ANCHOR id ="HTMLPARSERNODEINFO" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSERNODEINFO">
<ANCHOR id ="HTMLSAXHANDLER" href="gnome-xml/gnome-xml-htmlparser.html#HTMLSAXHANDLER">
<ANCHOR id ="HTMLSAXHANDLERPTR" href="gnome-xml/gnome-xml-htmlparser.html#HTMLSAXHANDLERPTR">
<ANCHOR id ="HTMLPARSERINPUT" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSERINPUT">
<ANCHOR id ="HTMLPARSERINPUTPTR" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSERINPUTPTR">
<ANCHOR id ="HTMLDOCPTR" href="gnome-xml/gnome-xml-htmlparser.html#HTMLDOCPTR">
<ANCHOR id ="HTMLNODEPTR" href="gnome-xml/gnome-xml-htmlparser.html#HTMLNODEPTR">
<ANCHOR id ="HTMLTAGLOOKUP" href="gnome-xml/gnome-xml-htmlparser.html#HTMLTAGLOOKUP">
<ANCHOR id ="HTMLENTITYLOOKUP" href="gnome-xml/gnome-xml-htmlparser.html#HTMLENTITYLOOKUP">
<ANCHOR id ="HTMLPARSEENTITYREF" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSEENTITYREF">
<ANCHOR id ="HTMLPARSECHARREF" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSECHARREF">
<ANCHOR id ="HTMLPARSEELEMENT" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSEELEMENT">
<ANCHOR id ="HTMLSAXPARSEDOC" href="gnome-xml/gnome-xml-htmlparser.html#HTMLSAXPARSEDOC">
<ANCHOR id ="HTMLPARSEDOC" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSEDOC">
<ANCHOR id ="HTMLSAXPARSEFILE" href="gnome-xml/gnome-xml-htmlparser.html#HTMLSAXPARSEFILE">
<ANCHOR id ="HTMLPARSEFILE" href="gnome-xml/gnome-xml-htmlparser.html#HTMLPARSEFILE">
<ANCHOR id ="GNOME-XML-HTMLTREE" href="gnome-xml/gnome-xml-htmltree.html">
<ANCHOR id ="HTML-TEXT-NODE" href="gnome-xml/gnome-xml-htmltree.html#HTML-TEXT-NODE">
<ANCHOR id ="HTML-ENTITY-REF-NODE" href="gnome-xml/gnome-xml-htmltree.html#HTML-ENTITY-REF-NODE">
<ANCHOR id ="HTML-COMMENT-NODE" href="gnome-xml/gnome-xml-htmltree.html#HTML-COMMENT-NODE">
<ANCHOR id ="HTMLDOCDUMPMEMORY" href="gnome-xml/gnome-xml-htmltree.html#HTMLDOCDUMPMEMORY">
<ANCHOR id ="HTMLDOCDUMP" href="gnome-xml/gnome-xml-htmltree.html#HTMLDOCDUMP">
<ANCHOR id ="HTMLSAVEFILE" href="gnome-xml/gnome-xml-htmltree.html#HTMLSAVEFILE">
<ANCHOR id ="GNOME-XML-XPATH" href="gnome-xml/gnome-xml-xpath.html">
<ANCHOR id ="XPATH-UNDEFINED" href="gnome-xml/gnome-xml-xpath.html#XPATH-UNDEFINED">
<ANCHOR id ="XPATH-NODESET" href="gnome-xml/gnome-xml-xpath.html#XPATH-NODESET">
<ANCHOR id ="XPATH-BOOLEAN" href="gnome-xml/gnome-xml-xpath.html#XPATH-BOOLEAN">
<ANCHOR id ="XPATH-NUMBER" href="gnome-xml/gnome-xml-xpath.html#XPATH-NUMBER">
<ANCHOR id ="XPATH-STRING" href="gnome-xml/gnome-xml-xpath.html#XPATH-STRING">
<ANCHOR id ="XPATH-MARKER" href="gnome-xml/gnome-xml-xpath.html#XPATH-MARKER">
<ANCHOR id ="XMLXPATHFUNCTION" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHFUNCTION">
<ANCHOR id ="XMLXPATHNEWCONTEXT" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHNEWCONTEXT">
<ANCHOR id ="XMLXPATHFREECONTEXT" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHFREECONTEXT">
<ANCHOR id ="XMLXPATHEVAL" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHEVAL">
<ANCHOR id ="XMLXPATHFREEOBJECT" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHFREEOBJECT">
<ANCHOR id ="XMLXPATHEVALEXPRESSION" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHEVALEXPRESSION">

View File

@ -106,11 +106,15 @@ NAME="LIBXML"
>Gnome XML Library</A
></H1
>The parser general interfaces
The parser SAX interfaces
Manipulation the tree generated by the parser
Routines for handling entities
All the stuff defined in DTDs
Callbacks in case of parsing error
Access to the parser internal routines
parsing HTML and generating a tree
printing HTML trees
A on-going XPath implementation
</DIV
><DIV
CLASS="NAVFOOTER"

View File

@ -12,6 +12,7 @@
extern void xmlDebugDumpString(FILE *output, const CHAR *str);
extern void xmlDebugDumpAttr(FILE *output, xmlAttrPtr attr, int depth);
extern void xmlDebugDumpAttrList(FILE *output, xmlAttrPtr attr, int depth);
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);

View File

@ -190,7 +190,9 @@ extern xmlSAXHandler htmlDefaultSAXHandler;
*/
CHAR *xmlStrdup(const CHAR *cur);
CHAR *xmlStrndup(const CHAR *cur, int len);
CHAR *xmlStrchr(const CHAR *str, CHAR val);
CHAR *xmlStrsub(const CHAR *str, int start, int len);
const CHAR *xmlStrchr(const CHAR *str, CHAR val);
const CHAR *xmlStrstr(const CHAR *str, CHAR *val);
int xmlStrcmp(const CHAR *str1, const CHAR *str2);
int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
int xmlStrlen(const CHAR *str);

108
include/libxml/xpath.h Normal file
View File

@ -0,0 +1,108 @@
/*
* xpath.c: interface for XML Path Language implementation
*
* Reference: W3C Working Draft 5 July 1999
* http://www.w3.org/Style/XSL/Group/1999/07/xpath-19990705.html
*
* See COPYRIGHT for the status of this software
*
* Author: Daniel.Veillard@w3.org
*/
#ifndef __XML_XPATH_H__
#define __XML_XPATH_H__
#include "tree.h"
/*
* A node-set (an unordered collection of nodes without duplicates)
*/
typedef struct xmlNodeSet {
int nodeNr; /* # of node in the set */
int nodeMax; /* allocated space */
xmlNodePtr *nodeTab; /* array of nodes in no particular order */
} xmlNodeSet, *xmlNodeSetPtr;
/*
* An expression is evaluated to yield an object, which
* has one of the following four basic types:
* - node-set
* - boolean
* - number
* - string
*/
#define XPATH_UNDEFINED 0
#define XPATH_NODESET 1
#define XPATH_BOOLEAN 2
#define XPATH_NUMBER 3
#define XPATH_STRING 4
#define XPATH_MARKER 5 /* used for func call checks */
typedef struct xmlXPathObject {
int type;
xmlNodeSetPtr nodesetval;
int boolval;
float floatval;
CHAR *stringval;
} xmlXPathObject, *xmlXPathObjectPtr;
/*
* Expression evaluation occurs with respect to a context.
* he context consists of:
* - a node (the context node)
* - a node list (the context node list)
* - a set of variable bindings
* - a function library
* - the set of namespace declarations in scope for the expression
*/
typedef struct xmlXPathContext {
xmlDocPtr doc; /* The current document */
xmlNodePtr node; /* The current node */
xmlNodeSetPtr nodelist; /* The current node list */
void *variables; /* TODO !!!! */
void *functions; /* TODO !!!! */
void *namespaces; /* TODO !!!! */
} xmlXPathContext, *xmlXPathContextPtr;
/*
* An XPath parser context, it contains pure parsing informations,
* an xmlXPathContext, and the stack of objects.
*/
typedef struct xmlXPathParserContext {
const CHAR *cur; /* the current char being parsed */
const CHAR *base; /* the full expression */
int error; /* error code */
xmlXPathContextPtr context; /* the evaluation context */
xmlXPathObjectPtr value; /* the current value */
int valueNr; /* number of values stacked */
int valueMax; /* max number of values stacked */
xmlXPathObjectPtr *valueTab; /* stack of values */
} xmlXPathParserContext, *xmlXPathParserContextPtr;
/*
* An XPath function
* The arguments (if any) are popped out of the context stack
* and the result is pushed on the stack.
*/
typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
/************************************************************************
* *
* Public API *
* *
************************************************************************/
xmlXPathContextPtr xmlXPathNewContext(xmlDocPtr doc, void *variables,
void *functions, void *namespaces);
void xmlXPathFreeContext(xmlXPathContextPtr ctxt);
xmlXPathObjectPtr xmlXPathEval(const CHAR *str, xmlXPathContextPtr ctxt);
void xmlXPathFreeObject(xmlXPathObjectPtr obj);
xmlXPathObjectPtr xmlXPathEvalExpression(const CHAR *str,
xmlXPathContextPtr ctxt);
#endif /* ! __XML_XPATH_H__ */

View File

@ -786,7 +786,7 @@ xmlStrncmp(const CHAR *str1, const CHAR *str2, int len) {
* Returns the CHAR * for the first occurence or NULL.
*/
CHAR *
const CHAR *
xmlStrchr(const CHAR *str, CHAR val) {
while (*str != 0) {
if (*str == val) return((CHAR *) str);
@ -795,6 +795,61 @@ xmlStrchr(const CHAR *str, CHAR val) {
return(NULL);
}
/**
* xmlStrstr:
* @str: the CHAR * array (haystack)
* @val: the CHAR to search (needle)
*
* a strstr for CHAR's
*
* Returns the CHAR * for the first occurence or NULL.
*/
const CHAR *
xmlStrstr(const CHAR *str, CHAR *val) {
int n;
if (str == NULL) return(NULL);
if (val == NULL) return(NULL);
n = xmlStrlen(val);
if (n == 0) return(str);
while (*str != 0) {
if (*str == *val) {
if (!xmlStrncmp(str, val, n)) return((const CHAR *) str);
}
str++;
}
return(NULL);
}
/**
* xmlStrsub:
* @str: the CHAR * array (haystack)
* @start: the index of the first char (zero based)
* @len: the length of the substring
*
* Extract a substring of a given string
*
* Returns the CHAR * for the first occurence or NULL.
*/
CHAR *
xmlStrsub(const CHAR *str, int start, int len) {
int i;
if (str == NULL) return(NULL);
if (start < 0) return(NULL);
if (len < 0) return(NULL);
for (i = 0;i < start;i++) {
if (*str == 0) return(NULL);
str++;
}
if (*str == 0) return(NULL);
return(xmlStrndup(str, len));
}
/**
* xmlStrlen:
* @str: the CHAR * array

View File

@ -190,7 +190,9 @@ extern xmlSAXHandler htmlDefaultSAXHandler;
*/
CHAR *xmlStrdup(const CHAR *cur);
CHAR *xmlStrndup(const CHAR *cur, int len);
CHAR *xmlStrchr(const CHAR *str, CHAR val);
CHAR *xmlStrsub(const CHAR *str, int start, int len);
const CHAR *xmlStrchr(const CHAR *str, CHAR val);
const CHAR *xmlStrstr(const CHAR *str, CHAR *val);
int xmlStrcmp(const CHAR *str1, const CHAR *str2);
int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
int xmlStrlen(const CHAR *str);

5
result/XPath/expr/base Normal file
View File

@ -0,0 +1,5 @@
Object is a number : 1
Object is a number : 3
Object is a number : 6
Object is a number : 11
Object is a number : 21

View File

@ -0,0 +1,5 @@
Object is a Boolean : true
Object is a Boolean : false
Object is a number : 1.5
Object is a string : tititoto
Object is a string : tititototatalast

19
result/XPath/expr/strings Normal file
View File

@ -0,0 +1,19 @@
Object is a string : 5
Object is a string : 0.5
Object is a string : -0.5
Object is a string : true
Object is a string : false
Object is a string : tititoto
Object is a string : tititototata
Object is a Boolean : true
Object is a Boolean : false
Object is a Boolean : true
Object is a Boolean : true
Object is a Boolean : true
Object is a Boolean : false
Object is a string : 234
Object is a string : 2345
Object is a string : 234
Object is a string : 12
Object is a number : 0
Object is a number : 4

View File

@ -0,0 +1,36 @@
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT head
Object is a Node Set :
Set contains 6 nodes:
1 ELEMENT head
2 ELEMENT chapter
3 ELEMENT chapter
4 ELEMENT chapter
5 ELEMENT chapter
6 ELEMENT chapter
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT title
Object is a Node Set :
Set contains 1 nodes:
1 TEXT
content=Welcome to Gnome
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT title
Object is a Node Set :
Set contains 6 nodes:
1 ELEMENT title
2 ELEMENT title
3 ELEMENT title
4 ELEMENT title
5 ELEMENT title
6 ELEMENT title
Object is a Node Set :
Set contains 5 nodes:
1 ELEMENT chapter
2 ELEMENT chapter
3 ELEMENT chapter
4 ELEMENT chapter
5 ELEMENT chapter

View File

@ -0,0 +1,25 @@
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT chapter
Object is a Node Set :
Set contains 2 nodes:
1 ELEMENT p
2 ELEMENT p
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT image
ATTRIBUTE href
TEXT
content=linus.gif
Object is a Node Set :
Set contains 2 nodes:
1 TEXT
content=bla bla bla ...
2 TEXT
content=...
Object is a Node Set :
Set contains 1 nodes:
1 TEXT
content=bla bla bla ...
Object is a Node Set :
Set contains 0 nodes:

View File

@ -0,0 +1,24 @@
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT head
Object is a Node Set :
Set contains 2 nodes:
1 ELEMENT head
2 ELEMENT chapter
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT title
Object is a Node Set :
Set contains 1 nodes:
1 TEXT
content=Welcome to Gnome
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT title
Object is a Node Set :
Set contains 2 nodes:
1 ELEMENT title
2 ELEMENT title
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT chapter

28
test/XPath/docs/chapters Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0"?>
<EXAMPLE prop1="gnome is great" prop2="&amp; linux too">
<head>
<title>Welcome to Gnome</title>
</head>
<chapter>
<title>The Linux adventure</title>
<p>bla bla bla ...</p>
<image href="linus.gif"/>
<p>...</p>
</chapter>
<chapter>
<title>Chapter 2</title>
<p>this is chapter 2 ...</p>
</chapter>
<chapter>
<title>Chapter 3</title>
<p>this is chapter 3 ...</p>
</chapter>
<chapter>
<title>Chapter 4</title>
<p>this is chapter 4 ...</p>
</chapter>
<chapter>
<title>Chapter 5</title>
<p>this is chapter 5 ...</p>
</chapter>
</EXAMPLE>

12
test/XPath/docs/simple Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<EXAMPLE prop1="gnome is great" prop2="&amp; linux too">
<head>
<title>Welcome to Gnome</title>
</head>
<chapter>
<title>The Linux adventure</title>
<p>bla bla bla ...</p>
<image href="linus.gif"/>
<p>...</p>
</chapter>
</EXAMPLE>

5
test/XPath/expr/base Normal file
View File

@ -0,0 +1,5 @@
1
1+2
2*3
1+2*3+4
(1+2)*(3+4)

View File

@ -0,0 +1,5 @@
true()
false()
number("1.5")
concat("titi",'toto')
concat("titi",'toto',"tata","last")

19
test/XPath/expr/strings Normal file
View File

@ -0,0 +1,19 @@
string(5)
string(0.5)
string(-0.5)
string(true())
string(false())
concat("titi","toto")
concat("titi","toto","tata")
starts-with("tititoto","titi")
starts-with("tititoto","to")
contains("tititototata","titi")
contains("tititototata","toto")
contains("tititototata","tata")
contains("tititototata","tita")
substring("12345",2,3)
substring("12345",2)
substring("12345",1.5,2.6)
substring("12345",0,3)
string-length("")
string-length("titi")

View File

@ -0,0 +1,7 @@
/child::head
/child::*
/child::head/child::title
/child::head/child::title/child::text()
/child::head/node()
/descendant::title
/descendant::p/ancestor::chapter

View File

@ -0,0 +1,6 @@
/chapter[1]
//p
//chapter/image
//p/text()
//p/text()[position()=1]
//p/text()[position()=last()]

View File

@ -0,0 +1,7 @@
/child::head
/child::*
/child::head/child::title
/child::head/child::title/child::text()
/child::head/node()
/descendant::title
/descendant::p/ancestor::chapter

193
testXPath.c Normal file
View File

@ -0,0 +1,193 @@
/*
* testXPath.c : a small tester program for XPath.
*
* 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 <sys/types.h>
#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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "xpath.h"
#include "tree.h"
#include "parser.h"
#include "debugXML.h"
static int debug = 0;
static int expr = 0;
static xmlDocPtr document = NULL;
/*
* Default document
*/
static CHAR buffer[] =
"<?xml version=\"1.0\"?>\n\
<EXAMPLE prop1=\"gnome is great\" prop2=\"&amp; linux too\">\n\
<head>\n\
<title>Welcome to Gnome</title>\n\
</head>\n\
<chapter>\n\
<title>The Linux adventure</title>\n\
<p>bla bla bla ...</p>\n\
<image href=\"linus.gif\"/>\n\
<p>...</p>\n\
</chapter>\n\
<chapter>\n\
<title>Chapter 2</title>\n\
<p>this is chapter 2 ...</p>\n\
</chapter>\n\
<chapter>\n\
<title>Chapter 3</title>\n\
<p>this is chapter 3 ...</p>\n\
</chapter>\n\
<chapter>\n\
<title>Chapter 4</title>\n\
<p>this is chapter 4 ...</p>\n\
</chapter>\n\
<chapter>\n\
<title>Chapter 5</title>\n\
<p>this is chapter 5 ...</p>\n\
</chapter>\n\
</EXAMPLE>\n\
";
void xmlXPAthDebugDumpNodeSet(FILE *output, xmlNodeSetPtr cur) {
int i;
if (cur == NULL) {
fprintf(output, "NodeSet is NULL !\n");
return;
}
fprintf(output, "Set contains %d nodes:\n", cur->nodeNr);
for (i = 0;i < cur->nodeNr;i++) {
fprintf(output, "%d", i + 1);
xmlDebugDumpOneNode(output, cur->nodeTab[i], 2);
}
}
void xmlXPAthDebugDumpObject(FILE *output, xmlXPathObjectPtr cur) {
if (cur == NULL) {
fprintf(output, "Object is empty (NULL)\n");
return;
}
switch(cur->type) {
case XPATH_UNDEFINED:
fprintf(output, "Object is uninitialized\n");
break;
case XPATH_NODESET:
fprintf(output, "Object is a Node Set :\n");
xmlXPAthDebugDumpNodeSet(output, cur->nodesetval);
break;
case XPATH_BOOLEAN:
fprintf(output, "Object is a Boolean : ");
if (cur->boolval) fprintf(output, "true\n");
else fprintf(output, "false\n");
break;
case XPATH_NUMBER:
fprintf(output, "Object is a number : %0g\n", cur->floatval);
break;
case XPATH_STRING:
fprintf(output, "Object is a string : ");
xmlDebugDumpString(output, cur->stringval);
fprintf(output, "\n");
break;
}
}
void testXPath(const char *str) {
xmlXPathObjectPtr res;
xmlXPathContextPtr ctxt;
ctxt = xmlXPathNewContext(document, NULL, NULL, NULL);
if (expr)
res = xmlXPathEvalExpression(str, ctxt);
else
res = xmlXPathEval(str, ctxt);
xmlXPAthDebugDumpObject(stdout, res);
xmlXPathFreeObject(res);
}
void testXPathFile(const char *filename) {
FILE *input;
char expr[5000];
input = fopen(filename, "r");
if (input == NULL) {
fprintf(stderr, "Cannot open %s for reading\n", filename);
return;
}
while (fscanf(input, "%s", expr) != EOF) {
testXPath(expr);
}
fclose(input);
}
int main(int argc, char **argv) {
int i;
int strings = 0;
int usefile = 0;
char *filename = NULL;
for (i = 1; i < argc ; i++) {
if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
debug++;
if ((!strcmp(argv[i], "-expr")) || (!strcmp(argv[i], "--expr")))
expr++;
if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "--input")))
filename = argv[++i];
if ((!strcmp(argv[i], "-f")) || (!strcmp(argv[i], "--file")))
usefile++;
}
if (document == NULL) {
if (filename == NULL)
document = xmlParseDoc(buffer);
else
document = xmlParseFile(filename);
}
for (i = 1; i < argc ; i++) {
if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "--input"))) {
i++; continue;
}
if (argv[i][0] != '-') {
if (usefile)
testXPathFile(argv[i]);
else
testXPath(argv[i]);
strings ++;
}
}
if (strings == 0) {
printf("Usage : %s [--debug] [--copy] stringsorfiles ...\n",
argv[0]);
printf("\tParse the XPath strings and output the result of the parsing\n");
printf("\t--debug : dump a debug version of the result\n");
printf("\t--expr : debug XPath expressions only\n");
printf("\t--input filename : or\n");
printf("\t-i filename : read the document from filename\n");
printf("\t--file : or\n");
printf("\t-f : read queries from files, args\n");
}
return(0);
}

View File

@ -37,7 +37,6 @@ static int noent = 0;
/*
* Note: there is a couple of errors introduced on purpose.
*/
static CHAR buffer[] =
"<?xml version=\"1.0\"?>\n\
<?xml:namespace ns = \"http://www.ietf.org/standards/dav/\" prefix = \"D\"?>\n\
@ -57,6 +56,7 @@ static CHAR buffer[] =
</D:propertyupdate>\n\
\n\
";
*/
/************************************************************************
* *

3698
xpath.c Normal file

File diff suppressed because it is too large Load Diff

108
xpath.h Normal file
View File

@ -0,0 +1,108 @@
/*
* xpath.c: interface for XML Path Language implementation
*
* Reference: W3C Working Draft 5 July 1999
* http://www.w3.org/Style/XSL/Group/1999/07/xpath-19990705.html
*
* See COPYRIGHT for the status of this software
*
* Author: Daniel.Veillard@w3.org
*/
#ifndef __XML_XPATH_H__
#define __XML_XPATH_H__
#include "tree.h"
/*
* A node-set (an unordered collection of nodes without duplicates)
*/
typedef struct xmlNodeSet {
int nodeNr; /* # of node in the set */
int nodeMax; /* allocated space */
xmlNodePtr *nodeTab; /* array of nodes in no particular order */
} xmlNodeSet, *xmlNodeSetPtr;
/*
* An expression is evaluated to yield an object, which
* has one of the following four basic types:
* - node-set
* - boolean
* - number
* - string
*/
#define XPATH_UNDEFINED 0
#define XPATH_NODESET 1
#define XPATH_BOOLEAN 2
#define XPATH_NUMBER 3
#define XPATH_STRING 4
#define XPATH_MARKER 5 /* used for func call checks */
typedef struct xmlXPathObject {
int type;
xmlNodeSetPtr nodesetval;
int boolval;
float floatval;
CHAR *stringval;
} xmlXPathObject, *xmlXPathObjectPtr;
/*
* Expression evaluation occurs with respect to a context.
* he context consists of:
* - a node (the context node)
* - a node list (the context node list)
* - a set of variable bindings
* - a function library
* - the set of namespace declarations in scope for the expression
*/
typedef struct xmlXPathContext {
xmlDocPtr doc; /* The current document */
xmlNodePtr node; /* The current node */
xmlNodeSetPtr nodelist; /* The current node list */
void *variables; /* TODO !!!! */
void *functions; /* TODO !!!! */
void *namespaces; /* TODO !!!! */
} xmlXPathContext, *xmlXPathContextPtr;
/*
* An XPath parser context, it contains pure parsing informations,
* an xmlXPathContext, and the stack of objects.
*/
typedef struct xmlXPathParserContext {
const CHAR *cur; /* the current char being parsed */
const CHAR *base; /* the full expression */
int error; /* error code */
xmlXPathContextPtr context; /* the evaluation context */
xmlXPathObjectPtr value; /* the current value */
int valueNr; /* number of values stacked */
int valueMax; /* max number of values stacked */
xmlXPathObjectPtr *valueTab; /* stack of values */
} xmlXPathParserContext, *xmlXPathParserContextPtr;
/*
* An XPath function
* The arguments (if any) are popped out of the context stack
* and the result is pushed on the stack.
*/
typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
/************************************************************************
* *
* Public API *
* *
************************************************************************/
xmlXPathContextPtr xmlXPathNewContext(xmlDocPtr doc, void *variables,
void *functions, void *namespaces);
void xmlXPathFreeContext(xmlXPathContextPtr ctxt);
xmlXPathObjectPtr xmlXPathEval(const CHAR *str, xmlXPathContextPtr ctxt);
void xmlXPathFreeObject(xmlXPathObjectPtr obj);
xmlXPathObjectPtr xmlXPathEvalExpression(const CHAR *str,
xmlXPathContextPtr ctxt);
#endif /* ! __XML_XPATH_H__ */