This is a schema for representing infosets explicitly in XML. There are two main versions: one for the basic infoset, and one for the post-schema-validation (PSV) infoset.
One reason for producing this schema was to allow comparison of the infosets generated by different processors (including parsers and schema validators). It has also proved useful for finding flaws in the infoset and schema specifications themselves.
All structures are represented as elements. There are two reasons for this:
A type is declared for each info item and property. Type names are camel-case with an initial capital. Element names are camel-case with an initial lower-case letter.
All properties are represented as elements whose name is the property name. These elements are globally declared (so properties with the same name must have the same type; this is true for the basic infoset and we can make it true for the PSV infoset). Their types fall into several categories:
Info item | Home item[property] | Pointing item[property] |
---|---|---|
Entity | document[entities] | skipped entity[entity] DTD[external DTD] Entity Start/End[entity] |
Notation | document[notations] | entity declaration[notation] |
Info item | Home item[property] | Pointing item[property] |
---|---|---|
Attribute Declaration |
schema information[schema components] attribute group[attribute use pairs] complex type[attribute use pairs] |
attribute group[attribute use pairs] complex type[attribute use pairs] |
Element Declaration |
schema information[schema components] particle[term] |
particle[term] |
Simple Type Definition |
schema information[schema components] attribute declaration[type definition] element declaration[type definition] complex type definition[base type definition] simple type definition[base type definition] simple type definition[primitive type definition] simple type definition[item type definition] simple type definition[union type definition] |
attribute declaration[type definition] element declaration[type definition] simple type definition[base type definition] simple type definition[primitive type definition] simple type definition[item type definition] simple type definition[union type definition] |
Complex Type Definition |
schema information[schema components] element declaration[type definition] |
element declaration[type definition] complex complex type definition[base type definition] |
Attribute Group Definition |
schema information[schema components] |
(none) |
Model Group Definition |
schema information[schema components] |
(none) |
Model Group | model group definition[model group] | particle[term] |
Particle |
model group[particles] complex type definition[content type] |
(none) |
Wildcard |
complex type definition[attribute wildcard] attribute group definition[attribute wildcard] particle[term] |
(none) |
Notation | schema information[schema components] | ? |
Both the basic and PSV infosets have an item called Notation Declaration. Something will have to be done about this in the Schema spec. For now I call the schema version S-NotationDeclaration.
(Say something about subsets and supersets.)