## Package net.sf.saxon.type

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

See:
Description

Interface Summary
AtomicType: 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, or xs:untyped.
ConversionResult: This is a marker interface used as the result methods that convert or cast values from one type to another.
FunctionItemType: Higher-order functions in XQuery 1.1 introduce a third kind of Item, namely a Function Item.
ISchemaCompiler: Marker interface: the only instance of this class is the SchemaCompiler object in Saxon-EE
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.
SchemaComponentVisitor: Interface for a general purpose visitor object used to process schema components
SchemaDeclaration: This is a marker interface that acts as a surrogate for an object representing a global 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
AnyFunctionType: An ItemType representing the type function().
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 xs:dayTimeDuration).
BuiltInListType: This class is used to implement the built-in list types NMTOKENS, ENTITIES, IDREFS.
BuiltInType: This non-instantiable class acts as a register of Schema objects containing all the built-in types: that is, the types defined in the "xs" namespace.
ErrorType: This class has a singleton instance which represents the XML Schema 1.1 built-in type xs:error
ExternalObjectType: This class represents the type of an external Java object returned by an extension function, or supplied as an external variable/parameter.
StringToDouble: This class converts a string to an xs:double according to the rules in XML Schema 1.0
Type: This class contains static information about types and methods for constructing type codes.
TypeHierarchy: This class exists to provide answers to questions about the type hierarchy.
Untyped: This class has a singleton instance which represents the complex type xdt:untyped, used for elements that have not been validated.
ValidationFailure: This exception indicates a failure when validating an instance against a type defined in a schema.

Exception Summary
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

Copyright (c) 2004-2010 Saxonica Limited. All rights reserved.