[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [syndication] XML validation with XSD
You're correct -- I mis-stated what's in the specification, layering on
what seems to be common practice (most parser's I've seen simply bail on
the first problem), rather than set-in-stone requirements.
There in fact is nothing to stop the parser from continuing, even in the
face of so-called 'fatal' errors --
XML 1.0 defines a 'fatal error' (http://www.w3.org/TR/REC-xml#dt-fatal) to
be:
An error which a conforming XML processor must detect and
report to the application. After encountering a fatal error, the
processor may continue processing the data to search for further errors
and may report such errors to the application. In order to support
correction of errors, the processor may make unprocessed data from
the document (with intermingled character data and markup) available to
the application. Once a fatal error is detected, however, the processor
must not continue normal processing (i.e., it must not continue to pass
character data and information about the document's logical structure
to the application in the normal way).
A 'regular' error is then defined as:
A violation of the rules of this specification; results are
undefined. Conforming software may detect and report an error and may
recover from it.
So there is absolutely no 'requirement' to stop -- just that you have to
appropriately indicate what happened if the error is 'fatal',
The specification then is careful to note when errors are 'fatal'. There
are actually very classes of 'fatal' errors -- basically (as you note)
violations of well-formedness constraints, plus some additional
requirements on the structure of entities (e.g., it's fatal if the
processor can't handle the character encoding of an entity; if there is a
general entity reference in an entity that points to an unparsed entity;
reference to an external entity inside an attribute value, and a few
others ..
The defintion of 'validity constraint' in teh XML specification
(Section 1.2) states:
Violations of validity constraints are errors; they must, at user
option, be reported by validating XML processors
And then later, at http://www.w3.org/TR/REC-xml#dt-validating
Definition: Validating processors must, at user option,
report violations of the constraints expressed by the declarations in
the DTD, and failures to fulfill the validity constraints given in this
specification.] To accomplish this, validating XML processors must read
and process the entire DTD and all external parsed entities referenced
in the document.
So these are errors, but not fatal ones, and the processor can happily
continue on.
This doesn't help Kanimozhi, unfortunately, but at least the truth is now
out there ;-)
Ian
On Sun, 1 Dec 2002, Danny Ayers wrote:
>
> >Parsers are required (by specification) to stop when they encounter
> >an error, which is why you're seeing this behavior. Indeed, a parser
> >that does not stop at the first error would be in violation of the XML
> >specifcation.
>
> I can't find anything that says this in the spec [1] - do you have a ref?
> This would certainly be expected behaviour if the XML wasn't well-formed (no
> way of telling what was meant to come next). But Kanimozhi's data is well
> formed, and I think it probably should be possible to report more than a
> terminatin validation error. I haven't personally done much with XSD
> validation, but I'm guessing that even if existing tools don't support full
> error reporting then there are at least two (hacky) possibilities - dive
> into the parser's source and get rid of all the "System.exit()"s or
> whatever; or write a series of schema, separating out the constraints - run
> them in different orders (sounds a bit unlikely, but I think it might just
> work).
>
> Cheers,
> Danny.
>
> [1] http://www.w3.org/TR/REC-xml#proc-types
>
> >On Thu, 14 Nov 2002, skanimozhi_sel wrote:
> >
> >> hi,
> >> we at present doing an application which requires the validation
> >> of well formed XML file across an XSD.But the problem we faced is,all
> >> the parsers stopped parsing when it encounterd the first error in the
> >> XML file .Our requirement is we want the xml file to be parsed fully
> >> and get all he errors in that file.Can anybody help me
> >>
> >> Thanks
> >> Kanimozhi
> >>
> >>
> >>
> >>
> >>
> >> Your use of Yahoo! Groups is subject to
> >http://docs.yahoo.com/info/terms/
> >>
> >>
> >>
> >
> >
> >
> >
> >Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
> >
> >
>
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>