Package overview for net.sf.saxon.type

This package contains classes that implement the XPath 2.0 and 3.1 type system. It contains that part of the functionality relevant to a non-schema-aware implementation: that is, the overall structure of the type system, together with representations of the built-in types.

The hierarchy of schema types is represented by the interfaces `SchemaType`, `ComplexType`, `SimpleType`, `ListType`, and `AtomicType`. (Union types never arise in non-schema-aware processing). There are concrete classes representing built-in types such as `AnyType`, `BuiltInAtomicType`, and `BuiltInListType`: the corresponding classes for user-defined types are in the `com.saxonica.schema` package.

The class `SequenceType` ought logically to be in this package but is actually in `net.sf.saxon.value`. A sequence type contains an `ItemType` which may be an `AtomicType` or a `NodeTest`: NodeTests are found in the package `net.sf.saxon.pattern`.

The logic for performing type checking is partly in the singleton class `Type` (which also contains many useful constants), and partly in the class `TypeChecker` found in package `net.sf.saxon.expr`.