## net.sf.saxon.type
Class Type

    java.lang.Object
      |
      +--net.sf.saxon.type.Type

All Implemented Interfaces:
  java.io.Serializable

public abstract class Type
extends java.lang.Object
implements java.io.Serializable

This class contains static information about types and methods for constructing type codes. The class is never instantiated.

See Also:
  Serialized Form

Field Summary
`static AtomicType` `ANY_ATOMIC_TYPE`
`static int` `ANY_SIMPLE_TYPE`
`static int` `ANY_URI` Item type representing the type xs:anyURI
`static AtomicType` `ANY_URI_TYPE`
`static int` `ATOMIC` Constant denoting any atomic type (the union of all primitive types and types derived from primitive types by restriction or by union)
`static short` `ATTRIBUTE` Item type representing an attribute node - attribute()
`static int` `BASE64_BINARY` Item type representing the type xs:base64Binary
`static AtomicType` `BASE64_BINARY_TYPE`
`static int` `BOOLEAN` Item type representing the type xs:boolean
`static AtomicType` `BOOLEAN_TYPE`
`static int` `BYTE` Item type representing the type xs:byte
`static short` `COMMENT` Item type representing a comment node
`static int` `DATE` Item type representing the type xs:date
`static int` `DATE_TIME` Item type representing the type xs:dateTime
`static AtomicType` `DATE_TIME_TYPE`
`static AtomicType` `DATE_TYPE`
`static int` `DAY_TIME_DURATION` Item type representing the type xdt:dayTimeDuration
`static AtomicType` `DAY_TIME_DURATION_TYPE`
`static int` `DECIMAL` Item type representing the type xs:decimal
`static AtomicType` `DECIMAL_TYPE`
`static int` `DISJOINT` Constant denoting relationship between two types: A is disjoint from B
`static short` `DOCUMENT` Item type representing a document node
`static int` `DOUBLE` Item type representing the type xs:double
`static AtomicType` `DOUBLE_TYPE`
`static int` `DURATION` Item type representing the type xs:duration
`static AtomicType` `DURATION_TYPE`
`static short` `ELEMENT` Type representing an element node - element()
`static short` `EMPTY` Item type that matches no items (corresponds to SequenceType empty())
`static int` `ENTITY` Item type representing the type xs:ENTITY
`static int` `FLOAT` Item type representing the type xs:float
`static AtomicType` `FLOAT_TYPE`
`static int` `G_DAY` Item type representing the type xs:gDay
`static AtomicType` `G_DAY_TYPE`
`static int` `G_MONTH` Item type representing the type xs:gMonth
`static int` `G_MONTH_DAY` Item type representing the type xs:monthDay
`static AtomicType` `G_MONTH_DAY_TYPE`
`static AtomicType` `G_MONTH_TYPE`
`static int` `G_YEAR` Item type representing the type xs:gYear
`static int` `G_YEAR_MONTH` Item type representing the type xs:gYearMonth
`static AtomicType` `G_YEAR_MONTH_TYPE`
`static AtomicType` `G_YEAR_TYPE`
`static int` `HEX_BINARY` Item type representing the type xs:hexBinary
`static AtomicType` `HEX_BINARY_TYPE`
`static int` `ID` Item type representing the type xs:ID
`static AtomicType` `ID_TYPE`
`static int` `IDREF` Item type representing the type xs:IDREF
`static int` `IDREFS` Content type representing the complex type xs:IDREFS
`static int` `INT` Item type representing the type xs:int
`static int` `INTEGER` Item type representing the type xs:integer
`static AtomicType` `INTEGER_TYPE`
`static short` `ITEM` An item type that matches any item
`static ItemType` `ITEM_TYPE`
`static int` `LANGUAGE` Item type representing the type xs:language
`static int` `LONG` Item type representing the type xs:long
`static short` `MAX_NODE_TYPE` A type that matches nothing
`static int` `NAME` Item type representing the type xs:NAME
`static short` `NAMESPACE` Item type representing a namespace node
`static int` `NCNAME` Item type representing the type xs:NCNAME
`static int` `NEGATIVE_INTEGER` Item type representing the type xs:negativeInteger
`static int` `NMTOKEN` Item type representing the type xs:NMTOKEN
`static int` `NMTOKENS` Content type representing the complex type xs:NMTOKENS
`static short` `NODE` An item type that matches any node
`static ItemType` `NODE_TYPE`
`static int` `NON_NEGATIVE_INTEGER` Item type representing the type xs:nonNegativeInteger
`static int` `NON_POSITIVE_INTEGER` Item type representing the type xs:nonPositiveInteger
`static int` `NORMALIZED_STRING` Item type representing the type xs:normalizedString
`static int` `NOTATION` Item type representing the type xs:NOTATION
`static AtomicType` `NOTATION_TYPE`
`static int` `NUMBER` Constant denoting any numeric type (the union of float, double, and decimal)
`static AtomicType` `NUMBER_TYPE`
`static int` `OBJECT` Constant representing the type of an external object (for use by extension functions)
`static int` `OVERLAPS` Constant denoting relationship between two types: A overlaps B
`static int` `POSITIVE_INTEGER` Item type representing the type xs:positiveInteger
`static short` `PROCESSING_INSTRUCTION` Item type representing a processing-instruction node
`static int` `QNAME` Item type representing the type xs:QName
`static AtomicType` `QNAME_TYPE`
`static int` `SAME_TYPE` Constant denoting relationship between two types: A is the same type as B
`static int` `SHORT` Item type representing the type xs:short
`static int` `STRING` Constants representing primitive data types defined in Schema Part 2
`static AtomicType` `STRING_TYPE`
`static int` `SUBSUMED_BY` Constant denoting relationship between two types: A is subsumed by B
`static int` `SUBSUMES` Constant denoting relationship between two types: A subsumes B
`static short` `TEXT` Item type representing a text node - text()
`static int` `TIME` Item type representing the type xs:time
`static AtomicType` `TIME_TYPE`
`static int` `TOKEN` Item type representing the type xs:token
`static int` `UNSIGNED_BYTE` Item type representing the type xs:unsignedByte
`static int` `UNSIGNED_INT` Item type representing the type xs:unsignedInt
`static int` `UNSIGNED_LONG` Item type representing the type xs:unsignedLong
`static int` `UNSIGNED_SHORT` Item type representing the type xs:unsignedShort
`static int` `UNTYPED_ATOMIC` Item type representing the type xdt:untypedAtomic (the type of the content of a schema-less node)
`static AtomicType` `UNTYPED_ATOMIC_TYPE`
`static int` `YEAR_MONTH_DURATION` Item type representing the type xdt:yearMonthDuration
`static AtomicType` `YEAR_MONTH_DURATION_TYPE`

Method Summary
`static java.lang.String` `displayTypeName(Item item)` Output (for diagnostics) a representation of the type of an item.
`static ItemType` `getBuiltInItemType(java.lang.String namespace, java.lang.String localName)` Get the SimpleType object for a built-in simple type code
`static ItemType` `getCommonSuperType(ItemType t1, ItemType t2)` Get a type that is a common supertype of two given types
`static int` `inverseRelationship(int r)` Get the inverse of a relationship between two types
`static boolean` `isComparable(int t1, int t2)` Determine whether two primitive atomic types are comparable
`static boolean` `isNodeType(ItemType type)` Test whether a given type is (some subtype of) node()
`static boolean` `isNumericPrimitiveType(ItemType t)` Test whether the supplied type, which must be a primitive type, is one of the numeric primitive types
`static boolean` `isOrdered(int type)` Determine whether a primitive type is ordered.
`static boolean` `isPrimitiveType(int code)` Determine whether this type is a primitive type.
`static boolean` `isPromotable(ItemType sourceType, ItemType targetType)` Determine whether type A is numerically promotable to type B, for example xs:integer is promotable to xs:double
`static boolean` `isSubType(ItemType subtype, ItemType supertype)` Determine whether type A is type B or one of its subtypes, recursively
`static int` `relationship(ItemType t1, ItemType t2)` Determine the relationship of one item type to another.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### ELEMENT

    public static final short ELEMENT

  Type representing an element node - element()

  See Also:
    Constant Field Values

### ATTRIBUTE

    public static final short ATTRIBUTE

  Item type representing an attribute node - attribute()

  See Also:
    Constant Field Values

### TEXT

    public static final short TEXT

  Item type representing a text node - text()

  See Also:
    Constant Field Values

### PROCESSING_INSTRUCTION

    public static final short PROCESSING_INSTRUCTION

  Item type representing a processing-instruction node

  See Also:
    Constant Field Values

### COMMENT

    public static final short COMMENT

  Item type representing a comment node

  See Also:
    Constant Field Values

### DOCUMENT

    public static final short DOCUMENT

  Item type representing a document node

  See Also:
    Constant Field Values

### NAMESPACE

    public static final short NAMESPACE

  Item type representing a namespace node

  See Also:
    Constant Field Values

### NODE

    public static final short NODE

  An item type that matches any node

  See Also:
    Constant Field Values

### NODE_TYPE

    public static final ItemType NODE_TYPE

### ITEM

    public static final short ITEM

  An item type that matches any item

  See Also:
    Constant Field Values

### ITEM_TYPE

    public static final ItemType ITEM_TYPE

### MAX_NODE_TYPE

    public static final short MAX_NODE_TYPE

  A type that matches nothing

  See Also:
    Constant Field Values

### EMPTY

    public static final short EMPTY

  Item type that matches no items (corresponds to SequenceType empty())

  See Also:
    Constant Field Values

### ATOMIC

    public static final int ATOMIC

  Constant denoting any atomic type (the union of all primitive types and types derived from primitive types by restriction or by union)

  See Also:
    Constant Field Values

### NUMBER

    public static final int NUMBER

  Constant denoting any numeric type (the union of float, double, and decimal)

  See Also:
    Constant Field Values

### STRING

    public static final int STRING

  Constants representing primitive data types defined in Schema Part 2

  See Also:
    Constant Field Values

### BOOLEAN

    public static final int BOOLEAN

  Item type representing the type xs:boolean

  See Also:
    Constant Field Values

### DECIMAL

    public static final int DECIMAL

  Item type representing the type xs:decimal

  See Also:
    Constant Field Values

### FLOAT

    public static final int FLOAT

  Item type representing the type xs:float

  See Also:
    Constant Field Values

### DOUBLE

    public static final int DOUBLE

  Item type representing the type xs:double

  See Also:
    Constant Field Values

### DURATION

    public static final int DURATION

  Item type representing the type xs:duration

  See Also:
    Constant Field Values

### DATE_TIME

    public static final int DATE_TIME

  Item type representing the type xs:dateTime

  See Also:
    Constant Field Values

### TIME

    public static final int TIME

  Item type representing the type xs:time

  See Also:
    Constant Field Values

### DATE

    public static final int DATE

  Item type representing the type xs:date

  See Also:
    Constant Field Values

### G_YEAR_MONTH

    public static final int G_YEAR_MONTH

  Item type representing the type xs:gYearMonth

  See Also:
    Constant Field Values

### G_YEAR

    public static final int G_YEAR

  Item type representing the type xs:gYear

  See Also:
    Constant Field Values

### G_MONTH_DAY

    public static final int G_MONTH_DAY

  Item type representing the type xs:monthDay

  See Also:
    Constant Field Values

### G_DAY

    public static final int G_DAY

  Item type representing the type xs:gDay

  See Also:
    Constant Field Values

### G_MONTH

    public static final int G_MONTH

  Item type representing the type xs:gMonth

  See Also:
    Constant Field Values

### HEX_BINARY

    public static final int HEX_BINARY

  Item type representing the type xs:hexBinary

  See Also:
    Constant Field Values

### BASE64_BINARY

    public static final int BASE64_BINARY

  Item type representing the type xs:base64Binary

  See Also:
    Constant Field Values

### ANY_URI

    public static final int ANY_URI

  Item type representing the type xs:anyURI

  See Also:
    Constant Field Values

### QNAME

    public static final int QNAME

  Item type representing the type xs:QName

  See Also:
    Constant Field Values

### NOTATION

    public static final int NOTATION

  Item type representing the type xs:NOTATION

  See Also:
    Constant Field Values

### UNTYPED_ATOMIC

    public static final int UNTYPED_ATOMIC

  Item type representing the type xdt:untypedAtomic (the type of the content of a schema-less node)

  See Also:
    Constant Field Values

### ANY_SIMPLE_TYPE

    public static final int ANY_SIMPLE_TYPE

See Also:
  Constant Field Values

### OBJECT

    public static final int OBJECT

  Constant representing the type of an external object (for use by extension functions)

  See Also:
    Constant Field Values

### INTEGER

    public static final int INTEGER

  Item type representing the type xs:integer

  See Also:
    Constant Field Values

### NON_POSITIVE_INTEGER

    public static final int NON_POSITIVE_INTEGER

  Item type representing the type xs:nonPositiveInteger

  See Also:
    Constant Field Values

### NEGATIVE_INTEGER

    public static final int NEGATIVE_INTEGER

  Item type representing the type xs:negativeInteger

  See Also:
    Constant Field Values

### LONG

    public static final int LONG

  Item type representing the type xs:long

  See Also:
    Constant Field Values

### INT

    public static final int INT

  Item type representing the type xs:int

  See Also:
    Constant Field Values

### SHORT

    public static final int SHORT

  Item type representing the type xs:short

  See Also:
    Constant Field Values

### BYTE

    public static final int BYTE

  Item type representing the type xs:byte

  See Also:
    Constant Field Values

### NON_NEGATIVE_INTEGER

    public static final int NON_NEGATIVE_INTEGER

  Item type representing the type xs:nonNegativeInteger

  See Also:
    Constant Field Values

### POSITIVE_INTEGER

    public static final int POSITIVE_INTEGER

  Item type representing the type xs:positiveInteger

  See Also:
    Constant Field Values

### UNSIGNED_LONG

    public static final int UNSIGNED_LONG

  Item type representing the type xs:unsignedLong

  See Also:
    Constant Field Values

### UNSIGNED_INT

    public static final int UNSIGNED_INT

  Item type representing the type xs:unsignedInt

  See Also:
    Constant Field Values

### UNSIGNED_SHORT

    public static final int UNSIGNED_SHORT

  Item type representing the type xs:unsignedShort

  See Also:
    Constant Field Values

### UNSIGNED_BYTE

    public static final int UNSIGNED_BYTE

  Item type representing the type xs:unsignedByte

  See Also:
    Constant Field Values

### NORMALIZED_STRING

    public static final int NORMALIZED_STRING

  Item type representing the type xs:normalizedString

  See Also:
    Constant Field Values

### TOKEN

    public static final int TOKEN

  Item type representing the type xs:token

  See Also:
    Constant Field Values

### LANGUAGE

    public static final int LANGUAGE

  Item type representing the type xs:language

  See Also:
    Constant Field Values

### NMTOKEN

    public static final int NMTOKEN

  Item type representing the type xs:NMTOKEN

  See Also:
    Constant Field Values

### NMTOKENS

    public static final int NMTOKENS

  Content type representing the complex type xs:NMTOKENS

  See Also:
    Constant Field Values

### NAME

    public static final int NAME

  Item type representing the type xs:NAME

  See Also:
    Constant Field Values

### NCNAME

    public static final int NCNAME

  Item type representing the type xs:NCNAME

  See Also:
    Constant Field Values

### ID

    public static final int ID

  Item type representing the type xs:ID

  See Also:
    Constant Field Values

### IDREF

    public static final int IDREF

  Item type representing the type xs:IDREF

  See Also:
    Constant Field Values

### IDREFS

    public static final int IDREFS

  Content type representing the complex type xs:IDREFS

  See Also:
    Constant Field Values

### ENTITY

    public static final int ENTITY

  Item type representing the type xs:ENTITY

  See Also:
    Constant Field Values

### YEAR_MONTH_DURATION

    public static final int YEAR_MONTH_DURATION

  Item type representing the type xdt:yearMonthDuration

  See Also:
    Constant Field Values

### DAY_TIME_DURATION

    public static final int DAY_TIME_DURATION

  Item type representing the type xdt:dayTimeDuration

  See Also:
    Constant Field Values

### UNTYPED_ATOMIC_TYPE

    public static final AtomicType UNTYPED_ATOMIC_TYPE

### ANY_ATOMIC_TYPE

    public static final AtomicType ANY_ATOMIC_TYPE

### YEAR_MONTH_DURATION_TYPE

    public static final AtomicType YEAR_MONTH_DURATION_TYPE

### DAY_TIME_DURATION_TYPE

    public static final AtomicType DAY_TIME_DURATION_TYPE

### STRING_TYPE

    public static final AtomicType STRING_TYPE

### BOOLEAN_TYPE

    public static final AtomicType BOOLEAN_TYPE

### DECIMAL_TYPE

    public static final AtomicType DECIMAL_TYPE

### FLOAT_TYPE

    public static final AtomicType FLOAT_TYPE

### DOUBLE_TYPE

    public static final AtomicType DOUBLE_TYPE

### DURATION_TYPE

    public static final AtomicType DURATION_TYPE

### DATE_TIME_TYPE

    public static final AtomicType DATE_TIME_TYPE

### TIME_TYPE

    public static final AtomicType TIME_TYPE

### DATE_TYPE

    public static final AtomicType DATE_TYPE

### G_YEAR_MONTH_TYPE

    public static final AtomicType G_YEAR_MONTH_TYPE

### G_YEAR_TYPE

    public static final AtomicType G_YEAR_TYPE

### G_MONTH_DAY_TYPE

    public static final AtomicType G_MONTH_DAY_TYPE

### G_DAY_TYPE

    public static final AtomicType G_DAY_TYPE

### G_MONTH_TYPE

    public static final AtomicType G_MONTH_TYPE

### HEX_BINARY_TYPE

    public static final AtomicType HEX_BINARY_TYPE

### BASE64_BINARY_TYPE

    public static final AtomicType BASE64_BINARY_TYPE

### ANY_URI_TYPE

    public static final AtomicType ANY_URI_TYPE

### QNAME_TYPE

    public static final AtomicType QNAME_TYPE

### NOTATION_TYPE

    public static final AtomicType NOTATION_TYPE

### INTEGER_TYPE

    public static final AtomicType INTEGER_TYPE

### ID_TYPE

    public static final AtomicType ID_TYPE

### NUMBER_TYPE

    public static final AtomicType NUMBER_TYPE

### SAME_TYPE

    public static final int SAME_TYPE

  Constant denoting relationship between two types: A is the same type as B

  See Also:
    Constant Field Values

### SUBSUMES

    public static final int SUBSUMES

  Constant denoting relationship between two types: A subsumes B

  See Also:
    Constant Field Values

### SUBSUMED_BY

    public static final int SUBSUMED_BY

  Constant denoting relationship between two types: A is subsumed by B

  See Also:
    Constant Field Values

### OVERLAPS

    public static final int OVERLAPS

  Constant denoting relationship between two types: A overlaps B

  See Also:
    Constant Field Values

### DISJOINT

    public static final int DISJOINT

  Constant denoting relationship between two types: A is disjoint from B

  See Also:
    Constant Field Values

Method Detail

### isNodeType

    public static boolean isNodeType(ItemType type)

  Test whether a given type is (some subtype of) node()

  Parameters:
    `type` - The type to be tested
  Returns:
    true if the item type is node() or a subtype of node()

### displayTypeName

    public static final java.lang.String displayTypeName(Item item)

  Output (for diagnostics) a representation of the type of an item. This does not have to be the most specific type

### getBuiltInItemType

    public static ItemType getBuiltInItemType(java.lang.String namespace,
                                              java.lang.String localName)

  Get the SimpleType object for a built-in simple type code

  Returns:
    the SimpleType, or null if not found

### isSubType

    public static boolean isSubType(ItemType subtype,
                                    ItemType supertype)

  Determine whether type A is type B or one of its subtypes, recursively

  Parameters:
    `subtype` - identifies the first type
    `supertype` - identifies the second type
  Returns:
    true if the first type is the second type or a (direct or indirect) subtype of the second type

### relationship

    public static int relationship(ItemType t1,
                                   ItemType t2)

  Determine the relationship of one item type to another.

  Parameters:
    `t1` - the first item type
    `t2` - the second item type
  Returns:
    `SAME_TYPE` if the types are the same; `SUBSUMES` if the first type subsumes the second (that is, all instances of the second type are also instances of the first); `SUBSUMED_BY` if the second type subsumes the first; `OVERLAPS` if the two types overlap (have a non-empty intersection); `DISJOINT` if the two types are disjoint (have an empty intersection)

### inverseRelationship

    public static int inverseRelationship(int r)

  Get the inverse of a relationship between two types

  Parameters:
    `r` - the relationship of type t1 to t2
  Returns:
    the relationship of type t2 to t1

### isPromotable

    public static boolean isPromotable(ItemType sourceType,
                                       ItemType targetType)

  Determine whether type A is numerically promotable to type B, for example xs:integer is promotable to xs:double

### getCommonSuperType

    public static final ItemType getCommonSuperType(ItemType t1,
                                                    ItemType t2)

  Get a type that is a common supertype of two given types

  Parameters:
    `t1` - the first item type
    `t2` - the second item type
  Returns:
    the item type that is a supertype of both the supplied item types

### isPrimitiveType

    public static boolean isPrimitiveType(int code)

  Determine whether this type is a primitive type. The primitive types are the 19 primitive types of XML Schema, plus xs:integer; the 7 node kinds; xdt:untypedAtomic; and all supertypes of these (item(), node(), xdt:anyAtomicType, xdt:number, ...)

  Parameters:
    `code` - the item type code to be tested
  Returns:
    true if the type is considered primitive under the above rules

### isComparable

    public static boolean isComparable(int t1,
                                       int t2)

  Determine whether two primitive atomic types are comparable

  Parameters:
    `t1` - the first type to compared. This must be a primitive atomic type as defined by `ItemType.getPrimitiveType()`
    `t2` - the second type to compared. This must be a primitive atomic type as defined by `ItemType.getPrimitiveType()`
  Returns:
    true if the types are comparable, as defined by the rules of the "eq" operator

### isOrdered

    public static boolean isOrdered(int type)

  Determine whether a primitive type is ordered. Note that the rules for this differ between XPath and XML Schema: these are the XPath rules.

  Parameters:
    `type` - the primitive item type being tested
  Returns:
    true if the types are potentially comparable. For abstract types (type=ATOMIC) we give the benefit of the doubt and return true.

### isNumericPrimitiveType

    public static boolean isNumericPrimitiveType(ItemType t)

  Test whether the supplied type, which must be a primitive type, is one of the numeric primitive types

  Parameters:
    `t` - the type being tested
  Returns:
    true if the type is integer, double, float, decimal, or the abstract type "numeric"