Class Type

java.lang.Object
net.sf.saxon.type.Type
All Implemented Interfaces:
Serializable

public abstract class Type extends Object implements Serializable
This class contains static information about types and methods for constructing type codes. The class is never instantiated.
See Also:
  • Field Details

    • ELEMENT

      public static final short ELEMENT
      Type representing an element node - element()
      See Also:
    • ATTRIBUTE

      public static final short ATTRIBUTE
      Item type representing an attribute node - attribute()
      See Also:
    • TEXT

      public static final short TEXT
      Item type representing a text node - text()
      See Also:
    • WHITESPACE_TEXT

      public static final short WHITESPACE_TEXT
      Item type representing a text node stored in the tiny tree as compressed whitespace
      See Also:
    • PROCESSING_INSTRUCTION

      public static final short PROCESSING_INSTRUCTION
      Item type representing a processing-instruction node
      See Also:
    • COMMENT

      public static final short COMMENT
      Item type representing a comment node
      See Also:
    • DOCUMENT

      public static final short DOCUMENT
      Item type representing a document node
      See Also:
    • NAMESPACE

      public static final short NAMESPACE
      Item type representing a namespace node
      See Also:
    • STOPPER

      public static final short STOPPER
      Dummy node kind used in the tiny tree to mark the end of the tree
      See Also:
    • PARENT_POINTER

      public static final short PARENT_POINTER
      Dummy node kind used in the tiny tree to contain a parent pointer
      See Also:
    • NODE

      public static final short NODE
      An item type that matches any node
      See Also:
    • NODE_TYPE

      public static final ItemType NODE_TYPE
    • ITEM

      public static final short ITEM
      An item type that matches any item
      See Also:
    • ITEM_TYPE

      public static final ItemType ITEM_TYPE
    • MAX_NODE_TYPE

      public static final short MAX_NODE_TYPE
      See Also:
    • EMPTY

      public static final short EMPTY
      Item type that matches no items (corresponds to SequenceType empty())
      See Also:
    • ANY_ATOMIC

      public static final int ANY_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:
    • NUMBER

      public static final int NUMBER
      Constant denoting any numeric type (the union of float, double, and decimal)
      See Also:
    • STRING

      public static final int STRING
      Constants representing primitive data types defined in Schema Part 2
      See Also:
    • BOOLEAN

      public static final int BOOLEAN
      Item type representing the type xs:boolean
      See Also:
    • DECIMAL

      public static final int DECIMAL
      Item type representing the type xs:decimal
      See Also:
    • FLOAT

      public static final int FLOAT
      Item type representing the type xs:float
      See Also:
    • DOUBLE

      public static final int DOUBLE
      Item type representing the type xs:double
      See Also:
    • DURATION

      public static final int DURATION
      Item type representing the type xs:duration
      See Also:
    • DATE_TIME

      public static final int DATE_TIME
      Item type representing the type xs:dateTime
      See Also:
    • TIME

      public static final int TIME
      Item type representing the type xs:time
      See Also:
    • DATE

      public static final int DATE
      Item type representing the type xs:date
      See Also:
    • G_YEAR_MONTH

      public static final int G_YEAR_MONTH
      Item type representing the type xs:gYearMonth
      See Also:
    • G_YEAR

      public static final int G_YEAR
      Item type representing the type xs:gYear
      See Also:
    • G_MONTH_DAY

      public static final int G_MONTH_DAY
      Item type representing the type xs:monthDay
      See Also:
    • G_DAY

      public static final int G_DAY
      Item type representing the type xs:gDay
      See Also:
    • G_MONTH

      public static final int G_MONTH
      Item type representing the type xs:gMonth
      See Also:
    • HEX_BINARY

      public static final int HEX_BINARY
      Item type representing the type xs:hexBinary
      See Also:
    • BASE64_BINARY

      public static final int BASE64_BINARY
      Item type representing the type xs:base64Binary
      See Also:
    • ANY_URI

      public static final int ANY_URI
      Item type representing the type xs:anyURI
      See Also:
    • QNAME

      public static final int QNAME
      Item type representing the type xs:QName
      See Also:
    • NOTATION

      public static final int NOTATION
      Item type representing the type xs:NOTATION
      See Also:
    • 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:
    • ANY_SIMPLE_TYPE

      public static final int ANY_SIMPLE_TYPE
      See Also:
    • OBJECT

      public static final int OBJECT
      Constant representing the type of an external object (for use by extension functions)
      See Also:
    • INTEGER

      public static final int INTEGER
      Item type representing the type xs:integer
      See Also:
    • NON_POSITIVE_INTEGER

      public static final int NON_POSITIVE_INTEGER
      Item type representing the type xs:nonPositiveInteger
      See Also:
    • NEGATIVE_INTEGER

      public static final int NEGATIVE_INTEGER
      Item type representing the type xs:negativeInteger
      See Also:
    • LONG

      public static final int LONG
      Item type representing the type xs:long
      See Also:
    • INT

      public static final int INT
      Item type representing the type xs:int
      See Also:
    • SHORT

      public static final int SHORT
      Item type representing the type xs:short
      See Also:
    • BYTE

      public static final int BYTE
      Item type representing the type xs:byte
      See Also:
    • NON_NEGATIVE_INTEGER

      public static final int NON_NEGATIVE_INTEGER
      Item type representing the type xs:nonNegativeInteger
      See Also:
    • POSITIVE_INTEGER

      public static final int POSITIVE_INTEGER
      Item type representing the type xs:positiveInteger
      See Also:
    • UNSIGNED_LONG

      public static final int UNSIGNED_LONG
      Item type representing the type xs:unsignedLong
      See Also:
    • UNSIGNED_INT

      public static final int UNSIGNED_INT
      Item type representing the type xs:unsignedInt
      See Also:
    • UNSIGNED_SHORT

      public static final int UNSIGNED_SHORT
      Item type representing the type xs:unsignedShort
      See Also:
    • UNSIGNED_BYTE

      public static final int UNSIGNED_BYTE
      Item type representing the type xs:unsignedByte
      See Also:
    • NORMALIZED_STRING

      public static final int NORMALIZED_STRING
      Item type representing the type xs:normalizedString
      See Also:
    • TOKEN

      public static final int TOKEN
      Item type representing the type xs:token
      See Also:
    • LANGUAGE

      public static final int LANGUAGE
      Item type representing the type xs:language
      See Also:
    • NMTOKEN

      public static final int NMTOKEN
      Item type representing the type xs:NMTOKEN
      See Also:
    • NMTOKENS

      public static final int NMTOKENS
      Content type representing the complex type xs:NMTOKENS
      See Also:
    • NAME

      public static final int NAME
      Item type representing the type xs:NAME
      See Also:
    • NCNAME

      public static final int NCNAME
      Item type representing the type xs:NCNAME
      See Also:
    • ID

      public static final int ID
      Item type representing the type xs:ID
      See Also:
    • IDREF

      public static final int IDREF
      Item type representing the type xs:IDREF
      See Also:
    • IDREFS

      public static final int IDREFS
      Content type representing the complex type xs:IDREFS
      See Also:
    • ENTITY

      public static final int ENTITY
      Item type representing the type xs:ENTITY
      See Also:
    • YEAR_MONTH_DURATION

      public static final int YEAR_MONTH_DURATION
      Item type representing the type xdt:yearMonthDuration
      See Also:
    • DAY_TIME_DURATION

      public static final int DAY_TIME_DURATION
      Item type representing the type xdt:dayTimeDuration
      See Also:
    • UNTYPED_ATOMIC_TYPE

      public static final BuiltInAtomicType UNTYPED_ATOMIC_TYPE
    • ANY_ATOMIC_TYPE

      public static final BuiltInAtomicType ANY_ATOMIC_TYPE
    • YEAR_MONTH_DURATION_TYPE

      public static final BuiltInAtomicType YEAR_MONTH_DURATION_TYPE
    • DAY_TIME_DURATION_TYPE

      public static final BuiltInAtomicType DAY_TIME_DURATION_TYPE
    • STRING_TYPE

      public static final BuiltInAtomicType STRING_TYPE
    • BOOLEAN_TYPE

      public static final BuiltInAtomicType BOOLEAN_TYPE
    • DECIMAL_TYPE

      public static final BuiltInAtomicType DECIMAL_TYPE
    • FLOAT_TYPE

      public static final BuiltInAtomicType FLOAT_TYPE
    • DOUBLE_TYPE

      public static final BuiltInAtomicType DOUBLE_TYPE
    • DURATION_TYPE

      public static final BuiltInAtomicType DURATION_TYPE
    • DATE_TIME_TYPE

      public static final BuiltInAtomicType DATE_TIME_TYPE
    • TIME_TYPE

      public static final BuiltInAtomicType TIME_TYPE
    • DATE_TYPE

      public static final BuiltInAtomicType DATE_TYPE
    • G_YEAR_MONTH_TYPE

      public static final BuiltInAtomicType G_YEAR_MONTH_TYPE
    • G_YEAR_TYPE

      public static final BuiltInAtomicType G_YEAR_TYPE
    • G_MONTH_DAY_TYPE

      public static final BuiltInAtomicType G_MONTH_DAY_TYPE
    • G_DAY_TYPE

      public static final BuiltInAtomicType G_DAY_TYPE
    • G_MONTH_TYPE

      public static final BuiltInAtomicType G_MONTH_TYPE
    • HEX_BINARY_TYPE

      public static final BuiltInAtomicType HEX_BINARY_TYPE
    • BASE64_BINARY_TYPE

      public static final BuiltInAtomicType BASE64_BINARY_TYPE
    • ANY_URI_TYPE

      public static final BuiltInAtomicType ANY_URI_TYPE
    • QNAME_TYPE

      public static final BuiltInAtomicType QNAME_TYPE
    • NOTATION_TYPE

      public static final BuiltInAtomicType NOTATION_TYPE
    • INTEGER_TYPE

      public static final BuiltInAtomicType INTEGER_TYPE
    • ID_TYPE

      public static final BuiltInAtomicType ID_TYPE
    • IDREF_TYPE

      public static final BuiltInAtomicType IDREF_TYPE
    • NCNAME_TYPE

      public static final BuiltInAtomicType NCNAME_TYPE
    • NUMBER_TYPE

      public static final BuiltInAtomicType NUMBER_TYPE
  • Method Details

    • 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()
    • getItemType

      public static ItemType getItemType(Item item, TypeHierarchy th)
      Get the ItemType of an Item
    • displayTypeName

      public static final 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(String namespace, String localName)
      Get the SimpleType object for a built-in simple type code
      Returns:
      the SimpleType, or null if not found
    • schemaTypeRelationship

      public static int schemaTypeRelationship(SchemaType s1, SchemaType s2)
      Get the relationship of two schema types to each other
    • getCommonSuperType

      public static final ItemType getCommonSuperType(ItemType t1, ItemType t2, TypeHierarchy th)
      Get a type that is a common supertype of two given types
      Parameters:
      t1 - the first item type
      t2 - the second item type
      th -
      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, xdt:dayTimeDuration and xdt:yearMonthDuration; xdt:untypedAtomic; the 7 node kinds; 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, boolean ordered)
      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()
      ordered - true if testing for an ordering comparison (lt, gt, le, ge). False if testing for an equality comparison (eq, ne)
      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"
    • isNumericPrimitiveType

      public static boolean isNumericPrimitiveType(int fp)
      Test whether the supplied type, which must be a primitive type, is one of the numeric primitive types
      Parameters:
      fp - the fingerprint of the type being tested
      Returns:
      true if the type is integer, double, float, decimal, or the abstract type "numeric"