## Package net.sf.saxon.type

This package contains classes that implement the XPath 2.0 type system.

See:
Description

Interface Summary
AtomicType: Marker interface for atomic types (these are either built-in atomic types or user-defined atomic types).
ComplexType: A complex type as defined in XML Schema: either a user-defined complex type, or xs:anyType.
ItemType: ItemType is an interface that allows testing of whether an Item conforms to an expected type.
ListType: Interface representing a simple type of variety List
SchemaComponent: This is a marker interface that represents any "schema component" as defined in the XML Schema specification.
SchemaDeclaration: This is a marker interface that acts as a surrogate for an object representing an element or attribute declaration.
SchemaType: SchemaType is an interface implemented by all schema types: simple and complex types, built-in and user-defined types.
SimpleType: This interface represents a simple type, which may be a built-in simple type, or a user-defined simple type.

Class Summary
AnyItemType: An implementation of ItemType that matches any item (node or atomic value)
AnySimpleType: This class has a singleton instance which represents the XML Schema built-in type xs:anySimpleType
AnyType: This class has a singleton instance which represents the XML Schema built-in type xs:anyType, also known as the urtype.
BuiltInAtomicType: This class represents a built-in atomic type, which may be either a primitive type (such as xs:decimal or xs:anyURI) or a derived type (such as xs:ID or xdt:dayTimeDuration).
BuiltInListType: This class is used to implement the built-in list types NMTOKENS, ENTITIES, IDREFS.
BuiltInSchemaFactory: This class is used to construct Schema objects containing all the built-in types: that is, the types defined in the "xs" and "xdt" namespaces.
ExternalObjectType: This class represents the type of an external Java object returned by an extension function, or supplied as an external variable/parameter.
RegexTranslator: This class translates XML Schema regex syntax into JDK 1.4 regex syntax.
Type: This class contains static information about types and methods for constructing type codes.
Untyped: This class has a singleton instance which represents the complex type xdt:untyped, used for elements that have not been validated.

Exception Summary
RegexTranslator.RegexSyntaxException: Thrown when an syntactically incorrect regular expression is detected.
SchemaException: An exception that identifies an error in reading, parsing, or validating a schema.
UnresolvedReferenceException: This exception occurs when an attempt is made to dereference a reference from one schema component to another, if the target of the reference cannot be found.
ValidationException: This exception indicates a failure when validating an instance against a type defined in a schema.

## Package net.sf.saxon.type Description

This package contains classes that implement the XPath 2.0 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`.

Michael H. Kay
Saxonica Limited
9 February 2005