Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - MSXML: problem with specifying of URL address in DOCTYPE declarati >Thread Next - Re: MSXML: problem with specifying of URL address in DOCTYPE decla Re: MSXML: problem with specifying of URL address in DOCTYPE declaratiTo: NULL Date: 2/7/2009 3:21:00 PM Alexander Sviridov wrote:
> Hi,
>
> I'll try to describe the problem on a simple example. Suppose what we have
> the following XML file:
>
> <?xml version="1.0" encoding="utf-8" standalone="no"?>
> <!DOCTYPE somedoctype SYSTEM "http://www.someserver.com/
> somedoctype.dtd">
> <root>
> </root>
That's invalid anyway, because you specify the root element type as
being somedoctype, but then have an element called root. The two must
match, eg
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE somedoctype SYSTEM "http://www.someserver.com/
somedoctype.dtd">
<somedoctype>
</somedoctype>
or
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE root SYSTEM "http://www.someserver.com/
somedoctype.dtd">
<root>
</root>
///Peter
> Also suppose the syntax of the file is valid according to
> http://www.someserver.com/somedoctype.dtd.
>
> I tried to load this file using MSXML (I tried with all versions of the
> parser from 2.6 to 6.0) as shown below:
>
> //XmlDoc: IXMLDOMDocument2;
> XmlDoc.validateOnParse := True;
> XmlDoc.resolveExternals := True;
> XmlDoc.setProperty('ProhibitDTD', False);
> XmlDoc.async := True;
> XmlDoc.load(FileName);
> while True do
> if XmlDoc.readyState = 4 then
> begin
> if XmlDoc.parseError.errorCode <> 0 then
> raise Exception.Create('Error.')
> else
> Break;
> end;
>
> The question is the XmlDoc.readyState is always equal to 3 i.e. the document
> is always in the "loading" state (state "4" means the document has been
> loaded).
>
> The problem will occur only if DOCTYPE's declaration contains URL. And if I
> download the "http://www.someserver.com/somedoctype.dtd" file, store it on my
> hard drive to, for example, "C:\Somepath\somedoctype.dtd" and use the
> following DOCTYPE declaration:
>
> <!DOCTYPE somedoctype SYSTEM "C:\Somepath\somedoctype.dtd">
>
> then all will work ok.
>
> Does anyone know anything about this problem? Or maybe I do something wrong?
>
> Thanks in advance
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
