Since there are several substantially different approaches to syntax while validating parsers can check data semantics as well).Even a non-validating parser has to do some relatively resource-intensive validation work.In these cases the behavior of the parser with respect to reporting such information to the application is undefined.

For MRM and DFDL parsing does validate against the model but restrictions are only checked if validation is enabled.

So for example with a non-validating parse against a model it will check only if a certain field can be interpreted as an in, using Content and Value it may check the int is say between 10 and 15.

Conforming XML processors fall into two classes: validating and non- validating.

Validating and non-validating processors alike MUST report violations of this specification's well-formedness constraints in the content of the document entity and any other parsed entities that they read.

With validation disabled these parsers check that the data can be interpreted as an instance of the model.

When validating the MRM and DFDL parsers will additionally check value constraints, correct data is of the correct type and check ordering constraints.

The DFDL and MRM are model based parsers, there is no way to use these parsers without a message model so they always check the message content against the model.

A non-validating parse with these parsers have stronger constraints than an XMLNSC based parser.

This chapter describes various performance tricks that allowed the author to write a very high-performing parser in C : pugixml.

While the techniques were used for an parser, most of them can be applied to parsers of other formats or even unrelated software (e.g., memory management algorithms are widely applicable beyond parsers).

For XMLNSC based parsers without validation the message will be treated as self defined and an exception will be thrown only if the message is not well formed.