Re: [xml] Strange validation errors in libxml 2.9.0 with MSVC 2010



I checked 2.8.0 out of curiosity - that works, too.
It seems a bug has been introduced into 2.9.0 - and it apparently impacts only MSVC 2010 (well, so far it seems I am the only one).

Best regards: Zoltán Ördögh


On Sun, Apr 7, 2013 at 2:19 AM, Zoltán Ördögh (GMail) <csimbi gmail com> wrote:
Hi all,
just to let you know, I downgraded to 2.7.7 and it works like a charm.

Best regards: Zoltán Ördögh


On Sun, Apr 7, 2013 at 12:07 AM, Zoltán Ördögh (GMail) <csimbi gmail com> wrote:
Hi Daniel,
thanks for responding over the weekend, much obliged.

Please note that the problem is not the system ID; I replaced the full path to the relative one as I was sure that my full path would not work for anyone else.
So, the DTD is in fact, found - how else would xmllint.exe be able to validate it? I messed up the DTD on purpose once just to see if there are errors - and there were, so xmllint can find the DTD for sure.

The source of my frustrations are the validation errors that are produced by a seemingly correct code, validated and well-formed XML and DTD.

The only thing I can think of is that the some build setting may be wrong - however I am not adept enough to discover that.

Did anyone managed to get xmlReaderForFile(...) working on MSVC 2010 without validation errors?

Best regards: Zoltán Ördögh


On Sat, Apr 6, 2013 at 11:05 PM, Daniel Veillard <veillard redhat com> wrote:
On Sat, Apr 06, 2013 at 07:50:56PM -0400, Zoltán Ördögh (GMail) wrote:
> I saw this code in xmllint.c (removed conditionals that do not apply):
[...]
> I tried using the exact same code but I still get the same validation
> errors on the first call to xmlTextReaderRead...
> It is vexing me...
> Any thoughts?

  See your xml and the system identifier you use for the DTD

  file:///./

if I use that I get an error that the DTD fails to be loaded on linux
and validation fails (xml and dtd being in the same directory) switching
to
  ./testme.dtd

works after that i.e. xmllint code succeeds

file:// URIs are (or used to be) completely underspecified, and
what you use there would mean on a Linux machine, the file testme.dtd
which is in the . directory under to root of the filesystem of the
localhost machine, i.e. /testme.dtd instead of ./testme.dtd
What is does on Windows and why, I can't guess and I can't test,
simply run your program under a debugger, since you have a reliable
behaviour !

Daniel

--
Daniel Veillard      | Open Source and Standards, Red Hat
veillard redhat com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]