From: Daniel Walker (daniel.j.walker_at_[hidden])
Date: 2006-04-23 18:03:57
On 4/23/06, Thorsten Ottosen <thorsten.ottosen_at_[hidden]> wrote:
> Daniel Walker wrote:
> > On 4/23/06, Thorsten Ottosen <thorsten.ottosen_at_[hidden]> wrote:
> >>>Schemas give you data types and type checking, which obviously is
> >>>nice to have when you're dealing with data. I think XML schema
> >>>validation is one of the most import features of XML for the same
> >>>reason that I like C++ templates and type-safe compile time
> >>>polymorphism: making sure your data types are correct before hand
> >>>gives you one less thing to worry about.
> >>Why is that better than a run-time exception when loading the file?
> > 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.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk