[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [xml] Parse dtd
- From: Daniel Veillard <veillard redhat com>
- To: Rene de Zwart <renez lightcon xs4all nl>
- Cc: xml gnome org
- Subject: Re: [xml] Parse dtd
- Date: Sun, 8 May 2005 15:05:49 -0400
On Sun, May 08, 2005 at 08:37:37PM +0200, Rene de Zwart wrote:
> I'm experimenting to make it possible to
> 1) Dtdparse (http://dtdparse.sf.net with libxml2)
> 2) do in vim as in emacs with psgml-mode.
> I need to parse a dtd for that and since libxml2 does that
> already I use that.
>
> I let libxml2 parse my dtd with the code below.
> I'm stuck now with getting the dtd tree from libxml2.
> I'm not getting anywhere with valid.c, hash.c, tree.c.
> My questions are
> 1) how do I loop/walk over the dtd structure to get the
> information.
> I envision something like:
> Element OPTIONS ATTR
> book Req,... id,lang
> chapter Req,... id,lang
> title Req,... id,lang
> para +,... role,lang
walk the children list won't help in general. See valid.c code to
lookup informations in the element and attribute hash tables associated
to the internal and external subset of a document.
> 2) Why does
> xmlParseChunk(ctxt, Buff, sizeof(Buff),0)
> report "memory:4: parser error : Document is empty"
> It seems illogical because I haven't said that I'm
> finished with xmlParseChunk (That would require the
> 4th parameter to be !0.
>
>
> static char Buff[] = {
> "<?xml version='1.0' encoding='UTF-8'?>\n"
> "<!DOCTYPE book PUBLIC '-//OASIS//DTD DocBook XML V4.3//EN' \n"
> "'http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd'\n"
> ">"
> };
ugly, note that buff includes the 0 terminating the string so
Buff[sizeof(Buff)] == 0 and the parser find an end of file and rightly
complains.
I strongly suggest you use a debugger while working on DTD lookup
code. A debugger would also have pointed out 2) fairly easilly I think.
Daniel
--
Daniel Veillard | Red Hat Desktop team http://redhat.com/
veillard redhat com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]