MSXML 6.0 vs. System.Xml: Schema handling differences
One of the goals we had for MSXML6 and system.xml in .NET 2.0 was to bring down the number of differences in schema processing between the two engines. I think we did a pretty good job here, but there are still a few differences left. The table below lists all known differences. If you find something that is not listed, please let me know.
In some cases both engines are compliant with the spec but have different behavior (when the spec is not specific). In others, one engine is compliant (denoted by a "*" in the table below) while the other one isn't. It is our goal to eliminate all the differences. However, some of them are corner case scenarios and we might decide not to invest time and resources in fixing them. If you really want to see a particular scenario fixed, let me know.
Feature | MSXML 6 | system.xml |
---|---|---|
Using XML attributes without explicit schema declaration | not supported | supported |
element of type xs:ID | supported* | not supported |
Conflicting values of facets minInclusive, maxInclusive in base and derived types | not allowed* | allowed |
maxOccurs=0 with no minOccurs | error* | no error |
Multiple redefines of the same schema document | error | warning (only first redefine is processed) |
parsing of targetNamespace attribute as anyURI | supported* | not supported |
Regex support for Unicode Character blocks | Unicode 3.1 | Unicode 4.0.1 |
Regex patterns involving combinating a negative group with another using '|' | not supported | supported* |
XSD Errata for Regex E2-52 | not supported | supported* |
Regex character class subtraction | not supported | supported* |
Matching newlines/linebreaks from a xsd:pattern facet | not supported | supported* |
minOccurs/maxOccurs value limits | upto 2^32 | CLR decimal |
limit of totalDigits facet values | upto 2^32 | CLR decimal |
datatypes used to store length, minLength, maxLength facet values | upto 2^32 | CLR decimal |
a prohibited attribute in a complex type | no error, attribute stripped* | warning, attribute stripped* |
unreferenced groups in the schema | always compiled | compiled on reference |
default element values availability | not supported | supported* |
expose post schema validation infoset | not supported | supported* |
ENTITY in DTD resolvable by attribute/elements of type xs:ENTITY | DOM=Yes, SAX=no | Yes |
adding a default qualified attribute to an element in a document that has attribute's namespace as default | DOM: apply qualified default attribute with namespace value as the prefix. SAX=does not generate prefix for default qualified attributes | error |
identity constraints (key/unique) evaluation for skip/lax blocks | node is null | not able to find node |
element with mixed content, and a fixed schema value, containing child elements | instance accepted | instance not accepted* |
whitespace facet on anySimpleType | preserve* | collapsed |
XSD Errata on xs:base64Binary parsing | supported* | not supported |
xs:dateTime: number of year digits supported | 10 | 4 |
xs:dateTIme: number of fraction digits supported in seconds | 9 | 7 |
xs:dateTime: Range of hours in time zone | "-14:00 to +14:00" * | 99:00 to -99:00 |
xs:dateTime: negative years | supported* | not supported |
"z" (as opposed to "Z") in xs:dateTime to represent UTC time | not allowed* | allowed |
xs:time: range of hour value | 00:00:00 to 24:00:00* | 00:00:00 to 23:59:59 |
xs:gMonth: XSD Errata revised the lexical representation of gMonth | only --MM is allowed* | both --MM and --MM-- are allowed |
maximum digits allowed for the xs:decimal data type | 128 | 29 |
xs:duration: duration with second part specified, but has no digits | error | no error, infer a 0 for the second part |
Comments
- Anonymous
October 05, 2007
The comment has been removed