1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-29 11:41:22 +03:00

More work toward 2.2.5, integrated a number of patches

- configure.in Makefile.am win32config.h.in: trying to cleanup
  make distcheck .... huh ...
- include/Makefile.am include/win32config.h: new directory
  for includes
- win32/Makefile.mingw win32/README.MSDev win32/libxml2/libxml2.dsp
  updated teh makefiles and instructions for WIN32
- xpath.c: small fixes
- test/XPath/ results/XPath: updated the testcases and results
- HTMLparser.c nanohttp.c testXPath.c: incorporated provided or
  suggested patches
- valid.c: fixed an ID bug
Daniel
This commit is contained in:
Daniel Veillard
2000-10-10 23:01:31 +00:00
parent b71379b796
commit e8282edd45
20 changed files with 571 additions and 420 deletions

View File

@ -1,3 +1,18 @@
Wed Oct 11 02:53:10 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org>
* More work toward 2.2.5, integrated a number of patches
* configure.in Makefile.am win32config.h.in: trying to cleanup
make distcheck .... huh ...
* include/Makefile.am include/win32config.h: new directory
for includes
* win32/Makefile.mingw win32/README.MSDev win32/libxml2/libxml2.dsp
updated teh makefiles and instructions for WIN32
* xpath.c: small fixes
* test/XPath/ results/XPath: updated the testcases and results
* HTMLparser.c nanohttp.c testXPath.c: incorporated provided or
suggested patches
* valid.c: fixed an ID bug
Mon Oct 9 14:28:56 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> Mon Oct 9 14:28:56 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org>
* moved xml-error.h to xmlerror.h: seems this allowed to bypass * moved xml-error.h to xmlerror.h: seems this allowed to bypass

View File

@ -14,7 +14,6 @@
#include <libxml/xmlversion.h> #include <libxml/xmlversion.h>
#ifdef LIBXML_HTML_ENABLED #ifdef LIBXML_HTML_ENABLED
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#ifdef HAVE_CTYPE_H #ifdef HAVE_CTYPE_H
@ -1786,7 +1785,7 @@ htmlParseHTMLName(htmlParserCtxtPtr ctxt) {
while ((i < HTML_PARSER_BUFFER_SIZE) && while ((i < HTML_PARSER_BUFFER_SIZE) &&
((IS_LETTER(CUR)) || (IS_DIGIT(CUR)) || ((IS_LETTER(CUR)) || (IS_DIGIT(CUR)) ||
(CUR == ':') || (CUR == '_'))) { (CUR == ':') || (CUR == '-') || (CUR == '_'))) {
if ((CUR >= 'A') && (CUR <= 'Z')) loc[i] = CUR + 0x20; if ((CUR >= 'A') && (CUR <= 'Z')) loc[i] = CUR + 0x20;
else loc[i] = CUR; else loc[i] = CUR;
i++; i++;

View File

@ -1,8 +1,8 @@
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
SUBDIRS = doc SUBDIRS = include doc
INCLUDES = -I@srcdir@/include @Z_CFLAGS@ @CORBA_CFLAGS@ INCLUDES = -I@srcdir@/include -I./include @Z_CFLAGS@ @CORBA_CFLAGS@
noinst_PROGRAMS=testSAX testHTML testXPath testURI noinst_PROGRAMS=testSAX testHTML testXPath testURI
@ -35,29 +35,6 @@ libxml_la_SOURCES = \
nanohttp.c \ nanohttp.c \
nanoftp.c nanoftp.c
xmlincdir = $(includedir)/libxml
xmlinc_HEADERS = \
include/libxml/SAX.h \
include/libxml/entities.h \
include/libxml/encoding.h \
include/libxml/parser.h \
include/libxml/parserInternals.h \
include/libxml/xmlerror.h \
include/libxml/HTMLparser.h \
include/libxml/HTMLtree.h \
include/libxml/debugXML.h \
include/libxml/tree.h \
include/libxml/xpath.h \
include/libxml/xmlIO.h \
include/libxml/xmlmemory.h \
include/libxml/nanohttp.h \
include/libxml/nanoftp.h \
include/libxml/uri.h \
include/libxml/valid.h \
include/libxml/xlink.h \
include/libxml/xmlversion.h
DEPS = $(top_builddir)/libxml.la DEPS = $(top_builddir)/libxml.la
LDADDS = $(top_builddir)/libxml.la @Z_LIBS@ @M_LIBS@ LDADDS = $(top_builddir)/libxml.la @Z_LIBS@ @M_LIBS@
@ -357,8 +334,8 @@ confexecdir=$(libdir)
confexec_DATA = xmlConf.sh confexec_DATA = xmlConf.sh
EXTRA_DIST = xmlConf.sh.in libxml.spec.in libxml.spec libxml.m4 \ EXTRA_DIST = xmlConf.sh.in libxml.spec.in libxml.spec libxml.m4 \
example/Makefile.am example/gjobread.c example/gjobs.xml \ example/Makefile.am example/gjobread.c example/gjobs.xml \
$(man_MANS) libxml-2.0.pc.in include/libxml/*.h.in \ $(man_MANS) libxml-2.0.pc.in include/libxml/*.h xmlversion.h.in \
win32/README.MSDev win32/libxml2/libxml2.dsp win32/README.MSDev win32/Makefile.mingw win32/libxml2/libxml2.dsp
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libxml-2.0.pc pkgconfig_DATA = libxml-2.0.pc

View File

@ -116,7 +116,7 @@ AC_CHECK_FUNC(isinf, , AC_CHECK_LIB(m, isinf,
[M_LIBS="-lm"; AC_DEFINE(HAVE_ISINF)])) [M_LIBS="-lm"; AC_DEFINE(HAVE_ISINF)]))
XML_LIBDIR='-L${libdir}' XML_LIBDIR='-L${libdir}'
XML_INCLUDEDIR='-I${srcdir}/include -I${includedir}/libxml -I${includedir}' XML_INCLUDEDIR='-I${includedir}/libxml -I${includedir}'
XML_LIBS="-lxml $Z_LIBS $M_LIBS $LIBS" XML_LIBS="-lxml $Z_LIBS $M_LIBS $LIBS"
dnl dnl
@ -299,18 +299,26 @@ dnl create the libxml and include links needed to get dependencies right
dnl dnl
if test ! -d $srcdir/include/libxml if test ! -d $srcdir/include/libxml
then then
rm -f $srcdir/include rm -rf $srcdir/include
rm -f $srcdir/libxml rm -f $srcdir/libxml
(cd $srcdir ; ln -s . include) mkdir $srcdir/include
(cd $srcdir ; ln -s . libxml) (cd $srcdir/include ; ln -s .. libxml)
fi
if test ! -e $srcdir/libxml
then
(cd $srcdir ; ln -s include/libxml libxml)
fi fi
if test ! -e include/libxml if test ! -e include/libxml
then then
rm -f include rm -rf include
rm -f libxml mkdir include
(ln -s $srcdir/include include) (cd include ; ln -s ../libxml libxml)
(ln -s $srcdir/include/libxml libxml) fi
if test ! -e libxml
then
rm -rf libxml
ln -s $srcdir/include/libxml libxml
fi fi
AC_OUTPUT(libxml.spec Makefile doc/Makefile example/Makefile include/libxml/xmlversion.h xml-config include/libxml/win32config.h libxml-2.0.pc) AC_OUTPUT(libxml.spec Makefile include/Makefile doc/Makefile example/Makefile libxml/xmlversion.h xml-config libxml-2.0.pc)

28
include/Makefile.am Normal file
View File

@ -0,0 +1,28 @@
## Process this file with automake to produce Makefile.in
xmlincdir = $(includedir)
xmlinc_HEADERS = \
libxml/xmlversion.h.in \
libxml/SAX.h \
libxml/entities.h \
libxml/encoding.h \
libxml/parser.h \
libxml/parserInternals.h \
libxml/xmlerror.h \
libxml/HTMLparser.h \
libxml/HTMLtree.h \
libxml/debugXML.h \
libxml/tree.h \
libxml/xpath.h \
libxml/xmlIO.h \
libxml/xmlmemory.h \
libxml/nanohttp.h \
libxml/nanoftp.h \
libxml/uri.h \
libxml/valid.h \
libxml/xlink.h
install-exec-hook:
$(mkinstalldirs) $(xmlincdir) $(xmlincdir)/libxml

View File

@ -4,10 +4,6 @@
#define HAVE_TIME_H #define HAVE_TIME_H
#define HAVE_FCNTL_H #define HAVE_FCNTL_H
#define LIBXML_VERSION @LIBXML_VERSION_NUMBER@
#define LIBXML_VERSION_STRING "@LIBXML_VERSION@"
#include <io.h> #include <io.h>
#ifdef INCLUDE_WINSOCK #ifdef INCLUDE_WINSOCK

View File

@ -104,6 +104,27 @@ static int initialized = 0;
static char *proxy = NULL; /* the proxy name if any */ static char *proxy = NULL; /* the proxy name if any */
static int proxyPort; /* the proxy port if any */ static int proxyPort; /* the proxy port if any */
/**
* A bit of portability macros and functions
*/
#ifdef _WINSOCKAPI_
WSADATA wsaData;
#else
#define closesocket(s) close(s)
#endif
int socket_errno(void) {
#ifdef _WINSOCKAPI_
return(WSAGetLastError());
#else
return(errno);
#endif
}
/** /**
* xmlNanoHTTPInit: * xmlNanoHTTPInit:
* *
@ -118,6 +139,11 @@ xmlNanoHTTPInit(void) {
if (initialized) if (initialized)
return; return;
#ifdef _WINSOCKAPI_
if (WSAStartup(0x0101, &wsaData) != 0)
WSACleanup();
#endif
if (proxy == NULL) { if (proxy == NULL) {
proxyPort = 80; proxyPort = 80;
env = getenv("no_proxy"); env = getenv("no_proxy");
@ -149,6 +175,9 @@ xmlNanoHTTPCleanup(void) {
if (proxy != NULL) if (proxy != NULL)
xmlFree(proxy); xmlFree(proxy);
initialized = 0; initialized = 0;
#ifdef _WINSOCKAPI_
WSACleanup();
#endif
return; return;
} }
@ -344,7 +373,7 @@ xmlNanoHTTPFreeCtxt(xmlNanoHTTPCtxtPtr ctxt) {
if (ctxt->contentType != NULL) xmlFree(ctxt->contentType); if (ctxt->contentType != NULL) xmlFree(ctxt->contentType);
if (ctxt->location != NULL) xmlFree(ctxt->location); if (ctxt->location != NULL) xmlFree(ctxt->location);
ctxt->state = XML_NANO_HTTP_NONE; ctxt->state = XML_NANO_HTTP_NONE;
if (ctxt->fd >= 0) close(ctxt->fd); if (ctxt->fd >= 0) closesocket(ctxt->fd);
ctxt->fd = -1; ctxt->fd = -1;
xmlFree(ctxt); xmlFree(ctxt);
} }
@ -359,7 +388,7 @@ xmlNanoHTTPFreeCtxt(xmlNanoHTTPCtxtPtr ctxt) {
static void static void
xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt) { xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt) {
if (ctxt->state & XML_NANO_HTTP_WRITE) if (ctxt->state & XML_NANO_HTTP_WRITE)
ctxt->last = write(ctxt->fd, ctxt->outptr, strlen(ctxt->outptr)); ctxt->last = send(ctxt->fd, ctxt->outptr, strlen(ctxt->outptr), 0);
} }
/** /**
@ -412,7 +441,7 @@ xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) {
ctxt->content = ctxt->in + d_content; ctxt->content = ctxt->in + d_content;
ctxt->inrptr = ctxt->in + d_inrptr; ctxt->inrptr = ctxt->in + d_inrptr;
} }
ctxt->last = read(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK); ctxt->last = recv(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK, 0);
if (ctxt->last > 0) { if (ctxt->last > 0) {
ctxt->inptr += ctxt->last; ctxt->inptr += ctxt->last;
return(ctxt->last); return(ctxt->last);
@ -420,17 +449,25 @@ xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) {
if (ctxt->last == 0) { if (ctxt->last == 0) {
return(0); return(0);
} }
#ifdef EWOULDBLOCK if (ctxt->last == -1) {
if ((ctxt->last == -1) && (errno != EWOULDBLOCK)) { switch (socket_errno()) {
return(0); case EINPROGRESS:
} case EWOULDBLOCK:
#if defined(EAGAIN) && EAGAIN != EWOULDBLOCK
case EAGAIN:
#endif #endif
tv.tv_sec=10; break;
tv.tv_usec=0; default:
return(0);
}
}
tv.tv_sec = 10;
tv.tv_usec = 0;
FD_ZERO(&rfd); FD_ZERO(&rfd);
FD_SET(ctxt->fd, &rfd); FD_SET(ctxt->fd, &rfd);
if(select(ctxt->fd+1, &rfd, NULL, NULL, &tv)<1) if (select(ctxt->fd+1, &rfd, NULL, NULL, &tv)<1)
return(0); return(0);
} }
return(0); return(0);
@ -450,10 +487,10 @@ xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt) {
static char * static char *
xmlNanoHTTPReadLine(xmlNanoHTTPCtxtPtr ctxt) { xmlNanoHTTPReadLine(xmlNanoHTTPCtxtPtr ctxt) {
char buf[4096]; char buf[4096];
char *bp=buf; char *bp = buf;
while(bp - buf < 4095) { while (bp - buf < 4095) {
if(ctxt->inrptr == ctxt->inptr) { if (ctxt->inrptr == ctxt->inptr) {
if (xmlNanoHTTPRecv(ctxt) == 0) { if (xmlNanoHTTPRecv(ctxt) == 0) {
if (bp == buf) if (bp == buf)
return(NULL); return(NULL);
@ -463,11 +500,11 @@ xmlNanoHTTPReadLine(xmlNanoHTTPCtxtPtr ctxt) {
} }
} }
*bp = *ctxt->inrptr++; *bp = *ctxt->inrptr++;
if(*bp == '\n') { if (*bp == '\n') {
*bp = 0; *bp = 0;
return(xmlMemStrdup(buf)); return(xmlMemStrdup(buf));
} }
if(*bp != '\r') if (*bp != '\r')
bp++; bp++;
} }
buf[4095] = 0; buf[4095] = 0;
@ -567,7 +604,7 @@ xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
struct timeval tv; struct timeval tv;
int status; int status;
if(s==-1) { if (s==-1) {
#ifdef DEBUG_HTTP #ifdef DEBUG_HTTP
perror("socket"); perror("socket");
#endif #endif
@ -576,9 +613,6 @@ xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
#ifdef _WINSOCKAPI_ #ifdef _WINSOCKAPI_
{ {
long levents = FD_READ | FD_WRITE | FD_ACCEPT |
FD_CONNECT | FD_CLOSE ;
int rv = 0 ;
u_long one = 1; u_long one = 1;
status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0; status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0;
@ -590,7 +624,7 @@ xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
status = IOCTL(s, FIONBIO, &enable); status = IOCTL(s, FIONBIO, &enable);
} }
#else /* VMS */ #else /* VMS */
if((status = fcntl(s, F_GETFL, 0)) != -1) { if ((status = fcntl(s, F_GETFL, 0)) != -1) {
#ifdef O_NONBLOCK #ifdef O_NONBLOCK
status |= O_NONBLOCK; status |= O_NONBLOCK;
#else /* O_NONBLOCK */ #else /* O_NONBLOCK */
@ -600,11 +634,11 @@ xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
#endif /* !O_NONBLOCK */ #endif /* !O_NONBLOCK */
status = fcntl(s, F_SETFL, status); status = fcntl(s, F_SETFL, status);
} }
if(status < 0) { if (status < 0) {
#ifdef DEBUG_HTTP #ifdef DEBUG_HTTP
perror("nonblocking"); perror("nonblocking");
#endif #endif
close(s); closesocket(s);
return(-1); return(-1);
} }
#endif /* !VMS */ #endif /* !VMS */
@ -615,10 +649,10 @@ xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
sin.sin_addr = ia; sin.sin_addr = ia;
sin.sin_port = htons(port); sin.sin_port = htons(port);
if((connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1) && if ((connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1) &&
(errno != EINPROGRESS)) { (socket_errno() != EINPROGRESS) && (socket_errno() != EWOULDBLOCK)) {
perror("connect"); perror("connect");
close(s); closesocket(s);
return(-1); return(-1);
} }
@ -632,14 +666,14 @@ xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
{ {
case 0: case 0:
/* Time out */ /* Time out */
close(s); closesocket(s);
return(-1); return(-1);
case -1: case -1:
/* Ermm.. ?? */ /* Ermm.. ?? */
#ifdef DEBUG_HTTP #ifdef DEBUG_HTTP
perror("select"); perror("select");
#endif #endif
close(s); closesocket(s);
return(-1); return(-1);
} }
@ -655,7 +689,7 @@ xmlNanoHTTPConnectAttempt(struct in_addr ia, int port)
return (-1); return (-1);
} }
if ( status ) { if ( status ) {
close (s); closesocket(s);
errno = status; errno = status;
return (-1); return (-1);
} }
@ -686,7 +720,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
int s; int s;
h=gethostbyname(host); h=gethostbyname(host);
if(h==NULL) if (h==NULL)
{ {
#ifdef DEBUG_HTTP #ifdef DEBUG_HTTP
fprintf(stderr,"unable to resolve '%s'.\n", host); fprintf(stderr,"unable to resolve '%s'.\n", host);
@ -699,7 +733,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
struct in_addr ia; struct in_addr ia;
memcpy(&ia, h->h_addr_list[i],4); memcpy(&ia, h->h_addr_list[i],4);
s = xmlNanoHTTPConnectAttempt(ia, port); s = xmlNanoHTTPConnectAttempt(ia, port);
if(s != -1) if (s != -1)
return(s); return(s);
} }
@ -839,7 +873,7 @@ retry:
} }
xmlNanoHTTPFreeCtxt(ctxt); xmlNanoHTTPFreeCtxt(ctxt);
#ifdef DEBUG_HTTP #ifdef DEBUG_HTTP
printf("Too many redirrects, aborting ...\n"); printf("Too many redirects, aborting ...\n");
#endif #endif
return(NULL); return(NULL);

View File

@ -3,79 +3,79 @@
Expression: /child::EXAMPLE Expression: /child::EXAMPLE
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT EXAMPLE 1 ELEMENT EXAMPLE
ATTRIBUTE prop1 ATTRIBUTE prop1
TEXT TEXT
content=gnome is great content=gnome is great
ATTRIBUTE prop2 ATTRIBUTE prop2
TEXT TEXT
content=& linux too content=& linux too
======================== ========================
Expression: /child::* Expression: /child::*
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT EXAMPLE 1 ELEMENT EXAMPLE
ATTRIBUTE prop1 ATTRIBUTE prop1
TEXT TEXT
content=gnome is great content=gnome is great
ATTRIBUTE prop2 ATTRIBUTE prop2
TEXT TEXT
content=& linux too content=& linux too
======================== ========================
Expression: /child::EXAMPLE/child::head Expression: /child::EXAMPLE/child::head
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT head 1 ELEMENT head
======================== ========================
Expression: /child::EXAMPLE/child::* Expression: /child::EXAMPLE/child::*
Object is a Node Set : Object is a Node Set :
Set contains 6 nodes: Set contains 6 nodes:
1 ELEMENT head 1 ELEMENT head
2 ELEMENT chapter 2 ELEMENT chapter
3 ELEMENT chapter 3 ELEMENT chapter
4 ELEMENT chapter 4 ELEMENT chapter
5 ELEMENT chapter 5 ELEMENT chapter
6 ELEMENT chapter 6 ELEMENT chapter
======================== ========================
Expression: /child::EXAMPLE/child::head/child::title Expression: /child::EXAMPLE/child::head/child::title
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT title 1 ELEMENT title
======================== ========================
Expression: /child::EXAMPLE/child::head/child::title/child::text() Expression: /child::EXAMPLE/child::head/child::title/child::text()
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 TEXT 1 TEXT
content=Welcome to Gnome content=Welcome to Gnome
======================== ========================
Expression: /child::EXAMPLE/child::head/node() Expression: /child::EXAMPLE/child::head/node()
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT title 1 ELEMENT title
======================== ========================
Expression: /descendant::title Expression: /descendant::title
Object is a Node Set : Object is a Node Set :
Set contains 6 nodes: Set contains 6 nodes:
1 ELEMENT title 1 ELEMENT title
2 ELEMENT title 2 ELEMENT title
3 ELEMENT title 3 ELEMENT title
4 ELEMENT title 4 ELEMENT title
5 ELEMENT title 5 ELEMENT title
6 ELEMENT title 6 ELEMENT title
======================== ========================
Expression: /descendant::p/ancestor::chapter Expression: /descendant::p/ancestor::chapter
Object is a Node Set : Object is a Node Set :
Set contains 5 nodes: Set contains 5 nodes:
1 ELEMENT chapter 1 ELEMENT chapter
2 ELEMENT chapter 2 ELEMENT chapter
3 ELEMENT chapter 3 ELEMENT chapter
4 ELEMENT chapter 4 ELEMENT chapter
5 ELEMENT chapter 5 ELEMENT chapter

View File

@ -23,54 +23,54 @@ Set contains 0 nodes:
Expression: /child::EXAMPLE/child::chapter[3]/preceding::* Expression: /child::EXAMPLE/child::chapter[3]/preceding::*
Object is a Node Set : Object is a Node Set :
Set contains 10 nodes: Set contains 10 nodes:
1 ELEMENT p 1 ELEMENT p
2 ELEMENT title 2 ELEMENT title
3 ELEMENT chapter 3 ELEMENT chapter
4 ELEMENT p 4 ELEMENT p
5 ELEMENT image 5 ELEMENT image
ATTRIBUTE href ATTRIBUTE href
TEXT TEXT
content=linus.gif content=linus.gif
6 ELEMENT p 6 ELEMENT p
7 ELEMENT title 7 ELEMENT title
8 ELEMENT chapter 8 ELEMENT chapter
9 ELEMENT title 9 ELEMENT title
10 ELEMENT head 10 ELEMENT head
======================== ========================
Expression: /child::EXAMPLE/child::chapter[3]/following::* Expression: /child::EXAMPLE/child::chapter[3]/following::*
Object is a Node Set : Object is a Node Set :
Set contains 6 nodes: Set contains 6 nodes:
1 ELEMENT chapter 1 ELEMENT chapter
2 ELEMENT title 2 ELEMENT title
3 ELEMENT p 3 ELEMENT p
4 ELEMENT chapter 4 ELEMENT chapter
5 ELEMENT title 5 ELEMENT title
6 ELEMENT p 6 ELEMENT p
======================== ========================
Expression: /child::EXAMPLE/child::chapter[1]/image/preceding::* Expression: /child::EXAMPLE/child::chapter[1]/image/preceding::*
Object is a Node Set : Object is a Node Set :
Set contains 4 nodes: Set contains 4 nodes:
1 ELEMENT p 1 ELEMENT p
2 ELEMENT title 2 ELEMENT title
3 ELEMENT title 3 ELEMENT title
4 ELEMENT head 4 ELEMENT head
======================== ========================
Expression: /child::EXAMPLE/child::chapter[1]/image/following::* Expression: /child::EXAMPLE/child::chapter[1]/image/following::*
Object is a Node Set : Object is a Node Set :
Set contains 13 nodes: Set contains 13 nodes:
1 ELEMENT p 1 ELEMENT p
2 ELEMENT chapter 2 ELEMENT chapter
3 ELEMENT title 3 ELEMENT title
4 ELEMENT p 4 ELEMENT p
5 ELEMENT chapter 5 ELEMENT chapter
6 ELEMENT title 6 ELEMENT title
7 ELEMENT p 7 ELEMENT p
8 ELEMENT chapter 8 ELEMENT chapter
9 ELEMENT title 9 ELEMENT title
10 ELEMENT p 10 ELEMENT p
11 ELEMENT chapter 11 ELEMENT chapter
12 ELEMENT title 12 ELEMENT title
13 ELEMENT p 13 ELEMENT p

View File

@ -3,31 +3,31 @@
Expression: //*[@id="root"] Expression: //*[@id="root"]
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT EXAMPLE 1 ELEMENT EXAMPLE
ATTRIBUTE id ATTRIBUTE id
TEXT TEXT
content=root content=root
ATTRIBUTE prop1 ATTRIBUTE prop1
TEXT TEXT
content=gnome is great content=gnome is great
ATTRIBUTE prop2 ATTRIBUTE prop2
TEXT TEXT
content=& linux too content=& linux too
======================== ========================
Expression: //*[@id="chapter2"] Expression: //*[@id="chapter2"]
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT chapter 1 ELEMENT chapter
ATTRIBUTE id ATTRIBUTE id
TEXT TEXT
content=chapter2 content=chapter2
======================== ========================
Expression: //*[@id="chapter5"] Expression: //*[@id="chapter5"]
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT chapter 1 ELEMENT chapter
ATTRIBUTE id ATTRIBUTE id
TEXT TEXT
content=chapter5 content=chapter5

View File

@ -3,61 +3,61 @@
Expression: /EXAMPLE Expression: /EXAMPLE
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT EXAMPLE 1 ELEMENT EXAMPLE
ATTRIBUTE prop1 ATTRIBUTE prop1
TEXT TEXT
content=gnome is great content=gnome is great
ATTRIBUTE prop2 ATTRIBUTE prop2
TEXT TEXT
content=& linux too content=& linux too
======================== ========================
Expression: /EXAMPLE/head Expression: /EXAMPLE/head
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT head 1 ELEMENT head
======================== ========================
Expression: /EXAMPLE/chapter[1] Expression: /EXAMPLE/chapter[1]
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT chapter 1 ELEMENT chapter
======================== ========================
Expression: //p Expression: //p
Object is a Node Set : Object is a Node Set :
Set contains 2 nodes: Set contains 2 nodes:
1 ELEMENT p 1 ELEMENT p
2 ELEMENT p 2 ELEMENT p
======================== ========================
Expression: //chapter/image Expression: //chapter/image
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT image 1 ELEMENT image
ATTRIBUTE href ATTRIBUTE href
TEXT TEXT
content=linus.gif content=linus.gif
======================== ========================
Expression: //p/text() Expression: //p/text()
Object is a Node Set : Object is a Node Set :
Set contains 2 nodes: Set contains 2 nodes:
1 TEXT 1 TEXT
content=bla bla bla ... content=bla bla bla ...
2 TEXT 2 TEXT
content=... content=...
======================== ========================
Expression: //p/text()[position()=1] Expression: //p/text()[position()=1]
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 TEXT 1 TEXT
content=bla bla bla ... content=bla bla bla ...
======================== ========================
Expression: //p/text()[position()=last()] Expression: //p/text()[position()=last()]
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 TEXT 1 TEXT
content=... content=...

View File

@ -3,67 +3,67 @@
Expression: /child::* Expression: /child::*
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT EXAMPLE 1 ELEMENT EXAMPLE
ATTRIBUTE prop1 ATTRIBUTE prop1
TEXT TEXT
content=gnome is great content=gnome is great
ATTRIBUTE prop2 ATTRIBUTE prop2
TEXT TEXT
content=& linux too content=& linux too
======================== ========================
Expression: /child::EXAMPLE Expression: /child::EXAMPLE
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT EXAMPLE 1 ELEMENT EXAMPLE
ATTRIBUTE prop1 ATTRIBUTE prop1
TEXT TEXT
content=gnome is great content=gnome is great
ATTRIBUTE prop2 ATTRIBUTE prop2
TEXT TEXT
content=& linux too content=& linux too
======================== ========================
Expression: /child::EXAMPLE/child::head Expression: /child::EXAMPLE/child::head
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT head 1 ELEMENT head
======================== ========================
Expression: /child::EXAMPLE/child::* Expression: /child::EXAMPLE/child::*
Object is a Node Set : Object is a Node Set :
Set contains 2 nodes: Set contains 2 nodes:
1 ELEMENT head 1 ELEMENT head
2 ELEMENT chapter 2 ELEMENT chapter
======================== ========================
Expression: /child::EXAMPLE/child::head/child::title Expression: /child::EXAMPLE/child::head/child::title
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT title 1 ELEMENT title
======================== ========================
Expression: /child::EXAMPLE/child::head/child::title/child::text() Expression: /child::EXAMPLE/child::head/child::title/child::text()
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 TEXT 1 TEXT
content=Welcome to Gnome content=Welcome to Gnome
======================== ========================
Expression: /child::EXAMPLE/child::head/node() Expression: /child::EXAMPLE/child::head/node()
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT title 1 ELEMENT title
======================== ========================
Expression: /descendant::title Expression: /descendant::title
Object is a Node Set : Object is a Node Set :
Set contains 2 nodes: Set contains 2 nodes:
1 ELEMENT title 1 ELEMENT title
2 ELEMENT title 2 ELEMENT title
======================== ========================
Expression: /descendant::p/ancestor::chapter Expression: /descendant::p/ancestor::chapter
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT chapter 1 ELEMENT chapter

View File

@ -3,10 +3,10 @@
Expression: //ITEM[1] Expression: //ITEM[1]
Object is a Node Set : Object is a Node Set :
Set contains 1 nodes: Set contains 1 nodes:
1 ELEMENT ITEM 1 ELEMENT ITEM
ATTRIBUTE monto ATTRIBUTE monto
TEXT TEXT
content=50.12 content=50.12
ATTRIBUTE divisa ATTRIBUTE divisa
TEXT TEXT
content=DOL content=DOL

View File

@ -3,25 +3,25 @@
<head> <head>
<title>Welcome to Gnome</title> <title>Welcome to Gnome</title>
</head> </head>
<chapter> <chapter id="chapter1">
<title>The Linux adventure</title> <title>The Linux adventure</title>
<p>bla bla bla ...</p> <p>bla bla bla ...</p>
<image href="linus.gif"/> <image href="linus.gif"/>
<p>...</p> <p>...</p>
</chapter> </chapter>
<chapter> <chapter id="chapter2">
<title>Chapter 2</title> <title>Chapter 2</title>
<p>this is chapter 2 ...</p> <p>this is chapter 2 ...</p>
</chapter> </chapter>
<chapter> <chapter id="chapter3">
<title>Chapter 3</title> <title>Chapter 3</title>
<p>this is chapter 3 ...</p> <p>this is chapter 3 ...</p>
</chapter> </chapter>
<chapter> <chapter id="chapter4">
<title>Chapter 4</title> <title>Chapter 4</title>
<p>this is chapter 4 ...</p> <p>this is chapter 4 ...</p>
</chapter> </chapter>
<chapter> <chapter id="chapter5">
<title>Chapter 5</title> <title>Chapter 5</title>
<p>this is chapter 5 ...</p> <p>this is chapter 5 ...</p>
</chapter> </chapter>

View File

@ -1 +1,8 @@
/following::* /preceding::* /child::EXAMPLE/preceding::* /child::EXAMPLE/following::* /child::EXAMPLE/child::chapter[3]/preceding::* /child::EXAMPLE/child::chapter[3]/following::* /child::EXAMPLE/child::chapter[1]/image/preceding::* /child::EXAMPLE/child::chapter[1]/image/following::* /following::*
/preceding::*
/child::EXAMPLE/preceding::*
/child::EXAMPLE/following::*
/child::EXAMPLE/child::chapter[3]/preceding::*
/child::EXAMPLE/child::chapter[3]/following::*
/child::EXAMPLE/child::chapter[1]/image/preceding::*
/child::EXAMPLE/child::chapter[1]/image/following::*

View File

@ -150,7 +150,7 @@ void xmlXPAthDebugDumpLocationSet(FILE *output, xmlLocationSetPtr cur, int depth
for (i = 0;i < cur->locNr;i++) { for (i = 0;i < cur->locNr;i++) {
fprintf(output, shift); fprintf(output, shift);
fprintf(output, "%d :\n", i + 1); fprintf(output, "%d : ", i + 1);
xmlXPAthDebugDumpObject(output, cur->locTab[i], depth + 1); xmlXPAthDebugDumpObject(output, cur->locTab[i], depth + 1);
} }
} }
@ -197,16 +197,18 @@ void xmlXPAthDebugDumpObject(FILE *output, xmlXPathObjectPtr cur, int depth) {
fprintf(output, "\n"); fprintf(output, "\n");
break; break;
case XPATH_RANGE: case XPATH_RANGE:
fprintf(output, "Object is a range : from "); fprintf(output, "Object is a range :\n");
fprintf(output, shift);
fprintf(output, "From ");
if (cur->index >= 0) if (cur->index >= 0)
fprintf(output, "index %d in ", cur->index); fprintf(output, "index %d in ", cur->index);
fprintf(output, "node"); fprintf(output, "node\n");
xmlXPAthDebugDumpNode(output, (xmlNodePtr) cur->user, depth + 1); xmlXPAthDebugDumpNode(output, (xmlNodePtr) cur->user, depth + 1);
fprintf(output, shift); fprintf(output, shift);
fprintf(output, " to "); fprintf(output, "To ");
if (cur->index2 >= 0) if (cur->index2 >= 0)
fprintf(output, "index %d in ", cur->index2); fprintf(output, "index %d in ", cur->index2);
fprintf(output, "node"); fprintf(output, "node\n");
xmlXPAthDebugDumpNode(output, (xmlNodePtr) cur->user2, depth + 1); xmlXPAthDebugDumpNode(output, (xmlNodePtr) cur->user2, depth + 1);
fprintf(output, "\n"); fprintf(output, "\n");
break; break;

View File

@ -1823,9 +1823,7 @@ xmlIsID(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
if (doc == NULL) return(0); if (doc == NULL) return(0);
if (attr == NULL) return(0); if (attr == NULL) return(0);
if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) { if ((doc->intSubset == NULL) && (doc->extSubset == NULL)) {
if (((attr->name[0] == 'I') || (attr->name[0] == 'i')) && return(0);
((attr->name[1] == 'D') || (attr->name[1] == 'd')) &&
(attr->name[2] == 0)) return(1);
} else if (doc->type == XML_HTML_DOCUMENT_NODE) { } else if (doc->type == XML_HTML_DOCUMENT_NODE) {
if ((xmlStrEqual(BAD_CAST "id", attr->name)) || if ((xmlStrEqual(BAD_CAST "id", attr->name)) ||
(xmlStrEqual(BAD_CAST "name", attr->name))) (xmlStrEqual(BAD_CAST "name", attr->name)))

95
win32/Makefile.mingw Normal file
View File

@ -0,0 +1,95 @@
# This Makefile will allow you to build the static library, a DLL, the
# DLL-import library, and the test executables using the "mingw" gcc
# compiler environment. This Makefile is based on Alfred Reibenschuh's
# version for 2.1.1, and was modified by Wayne Davison.
# Set "PREFIX" to the root of the mingw installed files.
PREFIX = /mingw
CC=gcc
CFLAGS=-O -Iinclude -I$(PREFIX)/include -D_WINSOCKAPI_ -fnative-struct
LDFLAGS=-L. -L$(PREFIX)/lib
LIBS=-lwsock32 -lz
AR=ar rc
DLLTOOL=dlltool
DLLWRAP=dllwrap
LIBSRCS=HTMLparser.c \
HTMLtree.c \
SAX.c \
debugXML.c \
encoding.c \
entities.c \
error.c \
nanoftp.c \
nanohttp.c \
parser.c \
parserInternals.c \
tree.c \
valid.c \
xlink.c \
xmlIO.c \
xmlmemory.c \
xpath.c \
uri.c
LIBOBJS=$(LIBSRCS:.c=.o)
OBJS=$(LIBOBJS)
LIBBASE=xml
LIB=lib$(LIBBASE).a
DLL=$(LIB:.a=.dll)
OBJ1=testHTML.o
OBJ2=testSAX.o
OBJ3=testURI.o
EXE1=$(OBJ1:.o=.exe)
EXE2=$(OBJ2:.o=.exe)
EXE3=$(OBJ3:.o=.exe)
IMPBASE=$(LIBBASE)_dll
IMP=lib$(IMPBASE).a
DEF=$(DLL:.dll=.def)
all: $(LIB) $(DLL) $(DEF) $(IMP) $(EXE1) $(EXE2) $(EXE3)
dll: $(DLL)
lib: $(LIB)
$(DLL): $(LIB) $(DEF) $(IMP)
$(DLLWRAP) --def $(DEF) --dllname $@ --output-lib $@ $(LIB) $(LDFLAGS) $(LIBS) -mwindows
$(LIB): $(LIBOBJS)
$(AR) $@ $^
$(DEF): $(LIBOBJS)
$(DLLTOOL) --kill-at --export-all -D $(DLL) --output-def $@ $^
$(IMP): $(DEF)
$(DLLTOOL) -d $< -l $@ -D $(DLL)
$(EXE1): $(OBJ1) $(LIBOBJS) $(DLL)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(IMPBASE) $(LIBS)
strip $@
$(EXE2): $(OBJ2) $(LIBOBJS) $(DLL)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(IMPBASE) $(LIBS)
strip $@
$(EXE3): $(OBJ3) $(LIBOBJS) $(LIB)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(LIBBASE) $(LIBS)
strip $@
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm *.o *.a *.dll *.def
test: all
./$(EXE1) -c $(OBJS) | xxd | head -3

View File

@ -1,41 +1,30 @@
The configuration stuff (i.e. what should be enabled/disabled) is in xmlversion.h If you're creating libxml2 with the "mingw" compiler, just copy the
I only tested it compiled fine with the current settings Makefile.mingw to the root directory as "Makefile", edit the PREFIX
value, and run "make".
If you're using MSVC, here are some instructions for how you can
proceed:
The configuration stuff (i.e. what should be enabled/disabled) is in
xmlversion.h I only tested it compiled fine with the current settings
(that is nearly everything disabled, I didn't need many features) (that is nearly everything disabled, I didn't need many features)
---------------------------- ----------------------------
How did I get everything in place so the MSDev project works from the original archive? How did I get everything in place so the MSDev project works from the
original archive?
from the cygwin prompt (http://sources.redhat.com/cygwin) : from the cygwin prompt (http://sources.redhat.com/cygwin) :
$ ./configure --disable-corba --without-ftp --without-http --without-html --wit $ ./configure --disable-corba --without-ftp --without-http --without-html --wit
hout-xpath --without-iconv --without-debug hout-xpath --without-iconv --without-debug
created a libxml directory and copied the following headers in:
HTMLparser.h entities.h tree.h xmlIO.h
HTMLtree.h nanoftp.h uri.h xmlmemory.h
SAX.h nanohttp.h valid.h xmlversion.h
debugXML.h parser.h xlink.h xpath.h
encoding.h parserInternals.h xml-error.h
modified win32config.h to comment out
#define LIBXML_VERSION 20204
#define LIBXML_VERSION_STRING "2.2.4"
(is already in xmlversion.h)
built the project file for the static library built the project file for the static library
---------------------------- ----------------------------
diff after doing the changes and cleaning up the generated stuff: diff after doing the changes and cleaning up the generated stuff:
Only in libxml2-2.2.4: MSDev [Note: this is out of date]
Common subdirectories: libxml2-2.2.4/SAXresult and libxml2-2.2.4-reference/SAXresult
Common subdirectories: libxml2-2.2.4/doc and libxml2-2.2.4-reference/doc
Common subdirectories: libxml2-2.2.4/example and libxml2-2.2.4-reference/example
Only in libxml2-2.2.4: libxml
Common subdirectories: libxml2-2.2.4/result and libxml2-2.2.4-reference/result
Common subdirectories: libxml2-2.2.4/test and libxml2-2.2.4-reference/test
Only in libxml2-2.2.4: win32config.h
diff libxml2-2.2.4/xmlversion.h libxml2-2.2.4-reference/xmlversion.h diff libxml2-2.2.4/xmlversion.h libxml2-2.2.4-reference/xmlversion.h
38c38 38c38
< #if 0 < #if 0

View File

@ -1,166 +1,169 @@
# Microsoft Developer Studio Project File - Name="libxml2" - Package Owner=<4> # Microsoft Developer Studio Project File - Name="libxml2" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00 # Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT ** # ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104 # TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=libxml2 - Win32 Debug CFG=libxml2 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run !MESSAGE use the Export Makefile command and run
!MESSAGE !MESSAGE
!MESSAGE NMAKE /f "libxml2.mak". !MESSAGE NMAKE /f "libxml2.mak".
!MESSAGE !MESSAGE
!MESSAGE You can specify a configuration when running NMAKE !MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE !MESSAGE
!MESSAGE NMAKE /f "libxml2.mak" CFG="libxml2 - Win32 Debug" !MESSAGE NMAKE /f "libxml2.mak" CFG="libxml2 - Win32 Debug"
!MESSAGE !MESSAGE
!MESSAGE Possible choices for configuration are: !MESSAGE Possible choices for configuration are:
!MESSAGE !MESSAGE
!MESSAGE "libxml2 - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libxml2 - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "libxml2 - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE "libxml2 - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE !MESSAGE
# Begin Project # Begin Project
# PROP AllowPerConfigDependencies 0 # PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "" # PROP Scc_ProjName ""
# PROP Scc_LocalPath "" # PROP Scc_LocalPath ""
CPP=cl.exe CPP=cl.exe
RSC=rc.exe F90=df.exe
RSC=rc.exe
!IF "$(CFG)" == "libxml2 - Win32 Release"
!IF "$(CFG)" == "libxml2 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0 # PROP BASE Use_MFC 0
# PROP BASE Output_Dir "Release" # PROP BASE Use_Debug_Libraries 0
# PROP BASE Intermediate_Dir "Release" # PROP BASE Output_Dir "Release"
# PROP BASE Target_Dir "" # PROP BASE Intermediate_Dir "Release"
# PROP Use_MFC 0 # PROP BASE Target_Dir ""
# PROP Use_Debug_Libraries 0 # PROP Use_MFC 0
# PROP Output_Dir "Release" # PROP Use_Debug_Libraries 0
# PROP Intermediate_Dir "Release" # PROP Output_Dir "Release"
# PROP Target_Dir "" # PROP Intermediate_Dir "Release"
F90=df.exe # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE F90 /include:"Release/"
# ADD CPP /nologo /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD F90 /include:"Release/"
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD RSC /l 0x409 /d "NDEBUG" # ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
BSC32=bscmake.exe # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD BASE BSC32 /nologo # ADD RSC /l 0x409 /d "NDEBUG"
# ADD BSC32 /nologo BSC32=bscmake.exe
LIB32=link.exe -lib # ADD BASE BSC32 /nologo
# ADD BASE LIB32 /nologo # ADD BSC32 /nologo
# ADD LIB32 /nologo LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
!ELSEIF "$(CFG)" == "libxml2 - Win32 Debug" # ADD LIB32 /nologo
# PROP BASE Use_MFC 0 !ELSEIF "$(CFG)" == "libxml2 - Win32 Debug"
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug" # PROP BASE Use_MFC 0
# PROP BASE Intermediate_Dir "Debug" # PROP BASE Use_Debug_Libraries 1
# PROP BASE Target_Dir "" # PROP BASE Output_Dir "Debug"
# PROP Use_MFC 0 # PROP BASE Intermediate_Dir "Debug"
# PROP Use_Debug_Libraries 1 # PROP BASE Target_Dir ""
# PROP Output_Dir "Debug" # PROP Use_MFC 0
# PROP Intermediate_Dir "Debug" # PROP Use_Debug_Libraries 1
# PROP Target_Dir "" # PROP Output_Dir "Debug"
F90=df.exe # PROP Intermediate_Dir "Debug"
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # PROP Target_Dir ""
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE F90 /include:"Debug/"
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD F90 /include:"Debug/"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
BSC32=bscmake.exe # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD BASE BSC32 /nologo # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD BSC32 /nologo # ADD RSC /l 0x409 /d "_DEBUG"
LIB32=link.exe -lib BSC32=bscmake.exe
# ADD BASE LIB32 /nologo # ADD BASE BSC32 /nologo
# ADD LIB32 /nologo # ADD BSC32 /nologo
LIB32=link.exe -lib
!ENDIF # ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
# Begin Target
!ENDIF
# Name "libxml2 - Win32 Release"
# Name "libxml2 - Win32 Debug" # Begin Target
# Begin Group "Source Files"
# Name "libxml2 - Win32 Release"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Name "libxml2 - Win32 Debug"
# Begin Source File # Begin Group "Source Files"
SOURCE=..\..\debugXML.c # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\debugXML.c
SOURCE=..\..\encoding.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\encoding.c
SOURCE=..\..\entities.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\entities.c
SOURCE=..\..\error.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\error.c
SOURCE=..\..\HTMLparser.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\HTMLparser.c
SOURCE=..\..\HTMLtree.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\HTMLtree.c
SOURCE=..\..\nanoftp.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\nanoftp.c
SOURCE=..\..\nanohttp.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\nanohttp.c
SOURCE=..\..\parser.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\parser.c
SOURCE=..\..\parserInternals.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\parserInternals.c
SOURCE=..\..\SAX.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\SAX.c
SOURCE=..\..\tree.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\tree.c
SOURCE=..\..\uri.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\uri.c
SOURCE=..\..\valid.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\valid.c
SOURCE=..\..\xlink.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\xlink.c
SOURCE=..\..\xmlIO.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\xmlIO.c
SOURCE=..\..\xmlmemory.c # End Source File
# End Source File # Begin Source File
# Begin Source File
SOURCE=..\..\xmlmemory.c
SOURCE=..\..\xpath.c # End Source File
# End Source File # Begin Source File
# End Group
# Begin Group "Header Files" SOURCE=..\..\xpath.c
# End Source File
# PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group
# End Group # Begin Group "Header Files"
# End Target
# End Project # PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project