From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-04-23 18:40:02
Daniel Walker wrote:
> On 4/23/06, Thorsten Ottosen <thorsten.ottosen_at_[hidden]> wrote:
>> Daniel Walker wrote:
>>> Why is what better? Maybe I wasn't clear. When an XML file includes
>>> a schema and fails validation when loaded, you do get a run-time
>>> exception. I was trying to say that's a good thing. An XML
>>> validating parser is similar to a compiler for a strongly typed
>>> language: it catches type errors (in addition to syntax errors)
>>> immediately before you actually try to use the file.
>> Ok, why is that exception better than the one I generate if I don't
>> meet the tag I expect, of if the contents of a tag is not of the
>> type I expect?
> Well, you don't have to write C++ code to check if the tag/content is
> what you expect. You declare the acceptable content (tags,
> attribute/values, branch structures/sub-trees, etc) for your config
> file in a schema, and the parser determines whether or not the XML
> file conforms to the format declared in the schema. It has
> time-saving, organization, and code-reuse advantages among others.
> Most importantly, it has correctness advantages because one bug you
> don't have to worry about when you're traversing the tree is running
> into a tag you don't expect. By the time the file is loaded, all the
> tags, tree structure, etc. has been validated by the parser and is
> guaranteed to be the format you expect.
I wouldn't omit the checks in the code, even when using a validating parser.
When the schema and the program logic disagree, the program logic "wins". Or
crashes. Either way, the schema loses. :-)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk