Package net.sf.saxon.value

## Class SequenceType

- java.lang.Object
- - net.sf.saxon.value.SequenceType

-     public final class SequenceType
      extends java.lang.Object

  SequenceType: a sequence type consists of a primary type, which indicates the type of item, and a cardinality, which indicates the number of occurrences permitted. Where the primary type is element or attribute, there may also be a content type, indicating the required type annotation on the element or attribute content.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static SequenceType` | `ANY_SEQUENCE` | A type that allows any sequence of items
    `static SequenceType` | `ATOMIC_SEQUENCE` |
    `static SequenceType` | `EMPTY_SEQUENCE` | A type that only permits the empty sequence
    `static SequenceType` | `FUNCTION_ITEM_SEQUENCE` | A type that allows a sequence of zero or mode function items
    `static SequenceType` | `NODE_SEQUENCE` | A type that allows a sequence of zero or more nodes
    `static SequenceType` | `NON_EMPTY_SEQUENCE` | A type that only permits a non-empty sequence
    `static SequenceType` | `OPTIONAL_ANY_URI` | A type that allows a single optional anyURI
    `static SequenceType` | `OPTIONAL_ATOMIC` | A type that allows zero or one atomic values
    `static SequenceType` | `OPTIONAL_BASE64_BINARY` | A type that allows a single optional xs:Base64Binary
    `static SequenceType` | `OPTIONAL_BOOLEAN` | A type that allows a single optional boolean
    `static SequenceType` | `OPTIONAL_BYTE` | A type that allows a single optional byte
    `static SequenceType` | `OPTIONAL_DATE` | A type that allows a single optional date
    `static SequenceType` | `OPTIONAL_DATE_TIME` | A type that allows a single optional dateTime
    `static SequenceType` | `OPTIONAL_DAY_TIME_DURATION` | A type that allows a single optional dayTimeDuration
    `static SequenceType` | `OPTIONAL_DECIMAL` | A type that allows a single optional decimal
    `static SequenceType` | `OPTIONAL_DOCUMENT_NODE` | A type that allows a single document node
    `static SequenceType` | `OPTIONAL_DOUBLE` | A type that allows a single optional double
    `static SequenceType` | `OPTIONAL_DURATION` | A type that allows a single optional duration
    `static SequenceType` | `OPTIONAL_FLOAT` | A type that allows a single optional float
    `static SequenceType` | `OPTIONAL_FUNCTION_ITEM` | A type that allows a sequence of zero or one function items
    `static SequenceType` | `OPTIONAL_G_DAY` | A type that allows a single optional gDay
    `static SequenceType` | `OPTIONAL_G_MONTH` | A type that allows a single optional gMonth
    `static SequenceType` | `OPTIONAL_G_MONTH_DAY` | A type that allows a single optional gMonthDay
    `static SequenceType` | `OPTIONAL_G_YEAR` | A type that allows a single optional gYear
    `static SequenceType` | `OPTIONAL_G_YEAR_MONTH` | A type that allows a single optional gYearMonth
    `static SequenceType` | `OPTIONAL_HEX_BINARY` | A type that allows a single optional xs:hexBinary
    `static SequenceType` | `OPTIONAL_INTEGER` | A type that allows a single optional integer
    `static SequenceType` | `OPTIONAL_ITEM` | A type that allows zero or one items, of any kind
    `static SequenceType` | `OPTIONAL_NODE` | A type that allows zero or one nodes
    `static SequenceType` | `OPTIONAL_NOTATION` | A type that allows a single optional xs:NOTATION
    `static SequenceType` | `OPTIONAL_NUMERIC` | A type that allows an optional numeric value
    `static SequenceType` | `OPTIONAL_QNAME` | A type that allows a single optional xs:QName
    `static SequenceType` | `OPTIONAL_SHORT` | A type that allows a single optional short
    `static SequenceType` | `OPTIONAL_STRING` | A type that allows a single optional string
    `static SequenceType` | `OPTIONAL_TIME` | A type that allows a single optional time
    `static SequenceType` | `OPTIONAL_YEAR_MONTH_DURATION` | A type that allows a single optional yearMonthDuration
    `static SequenceType` | `SINGLE_ATOMIC` | A type that allows exactly one atomic value
    `static SequenceType` | `SINGLE_BOOLEAN` | A type that allows a single boolean
    `static SequenceType` | `SINGLE_BYTE` | A type that allows a single short
    `static SequenceType` | `SINGLE_DECIMAL` | A type that allows a single decimal
    `static SequenceType` | `SINGLE_DOUBLE` | A type that allows a single double
    `static SequenceType` | `SINGLE_FLOAT` | A type that allows a single float
    `static SequenceType` | `SINGLE_FUNCTION` | A type that allows a single function item
    `static SequenceType` | `SINGLE_INTEGER` | A type that allows a single integer
    `static SequenceType` | `SINGLE_ITEM` | A type that allows exactly one item, of any kind
    `static SequenceType` | `SINGLE_NODE` | A type that allows a single node
    `static SequenceType` | `SINGLE_NUMERIC` |
    `static SequenceType` | `SINGLE_QNAME` | A type that allows a single xs:QName
    `static SequenceType` | `SINGLE_SHORT` | A type that allows a single short
    `static SequenceType` | `SINGLE_STRING` | A type that allows a single string
    `static SequenceType` | `SINGLE_UNTYPED_ATOMIC` | A type that allows a single untyped atomic
    `static SequenceType` | `STRING_SEQUENCE` | A type that allows a sequence of zero or more string values
    `static SequenceType` | `VOID` | A type that has no instances

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SequenceType​(ItemType primaryType, int cardinality)` | Construct an instance of SequenceType.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(java.lang.Object obj)` | Indicates whether some other object is "equal to" this one.
    `java.util.Optional<java.lang.String>` | `explainMismatch​(GroundedValue value, TypeHierarchy th)` | Get extra diagnostic information about why a supplied item does not conform to this item type, if available.
    `int` | `getCardinality()` | Get the cardinality component of this SequenceType.
    `ItemType` | `getPrimaryType()` | Get the "primary" part of this required type.
    `int` | `hashCode()` | Returns a hash code value for the object.
    `boolean` | `isSameType​(SequenceType other, TypeHierarchy th)` |
    `static SequenceType` | `makeSequenceType​(ItemType primaryType, int cardinality)` | Construct an instance of SequenceType.
    `boolean` | `matches​(Sequence value, TypeHierarchy th)` | Determine whether a given value is a valid instance of this SequenceType
    `java.lang.String` | `toAlphaCode()` |
    `java.lang.String` | `toExportString()` | Return a string representation of this SequenceType suitable for use in stylesheet export files.
    `java.lang.String` | `toString()` | Return a string representation of this SequenceType

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ANY_SEQUENCE

          public static final SequenceType ANY_SEQUENCE

      A type that allows any sequence of items

    - #### SINGLE_ITEM

          public static final SequenceType SINGLE_ITEM

      A type that allows exactly one item, of any kind

    - #### OPTIONAL_ITEM

          public static final SequenceType OPTIONAL_ITEM

      A type that allows zero or one items, of any kind

    - #### SINGLE_ATOMIC

          public static final SequenceType SINGLE_ATOMIC

      A type that allows exactly one atomic value

    - #### OPTIONAL_ATOMIC

          public static final SequenceType OPTIONAL_ATOMIC

      A type that allows zero or one atomic values

    - #### ATOMIC_SEQUENCE

          public static final SequenceType ATOMIC_SEQUENCE

    - #### SINGLE_STRING

          public static final SequenceType SINGLE_STRING

      A type that allows a single string

    - #### SINGLE_UNTYPED_ATOMIC

          public static final SequenceType SINGLE_UNTYPED_ATOMIC

      A type that allows a single untyped atomic

    - #### OPTIONAL_STRING

          public static final SequenceType OPTIONAL_STRING

      A type that allows a single optional string

    - #### SINGLE_BOOLEAN

          public static final SequenceType SINGLE_BOOLEAN

      A type that allows a single boolean

    - #### OPTIONAL_BOOLEAN

          public static final SequenceType OPTIONAL_BOOLEAN

      A type that allows a single optional boolean

    - #### SINGLE_INTEGER

          public static final SequenceType SINGLE_INTEGER

      A type that allows a single integer

    - #### SINGLE_DECIMAL

          public static final SequenceType SINGLE_DECIMAL

      A type that allows a single decimal

    - #### OPTIONAL_INTEGER

          public static final SequenceType OPTIONAL_INTEGER

      A type that allows a single optional integer

    - #### SINGLE_SHORT

          public static final SequenceType SINGLE_SHORT

      A type that allows a single short

    - #### OPTIONAL_SHORT

          public static final SequenceType OPTIONAL_SHORT

      A type that allows a single optional short

    - #### SINGLE_BYTE

          public static final SequenceType SINGLE_BYTE

      A type that allows a single short

    - #### OPTIONAL_BYTE

          public static final SequenceType OPTIONAL_BYTE

      A type that allows a single optional byte

    - #### SINGLE_DOUBLE

          public static final SequenceType SINGLE_DOUBLE

      A type that allows a single double

    - #### OPTIONAL_DOUBLE

          public static final SequenceType OPTIONAL_DOUBLE

      A type that allows a single optional double

    - #### SINGLE_FLOAT

          public static final SequenceType SINGLE_FLOAT

      A type that allows a single float

    - #### OPTIONAL_FLOAT

          public static final SequenceType OPTIONAL_FLOAT

      A type that allows a single optional float

    - #### OPTIONAL_DECIMAL

          public static final SequenceType OPTIONAL_DECIMAL

      A type that allows a single optional decimal

    - #### OPTIONAL_ANY_URI

          public static final SequenceType OPTIONAL_ANY_URI

      A type that allows a single optional anyURI

    - #### OPTIONAL_DATE

          public static final SequenceType OPTIONAL_DATE

      A type that allows a single optional date

    - #### OPTIONAL_TIME

          public static final SequenceType OPTIONAL_TIME

      A type that allows a single optional time

    - #### OPTIONAL_G_YEAR

          public static final SequenceType OPTIONAL_G_YEAR

      A type that allows a single optional gYear

    - #### OPTIONAL_G_YEAR_MONTH

          public static final SequenceType OPTIONAL_G_YEAR_MONTH

      A type that allows a single optional gYearMonth

    - #### OPTIONAL_G_MONTH

          public static final SequenceType OPTIONAL_G_MONTH

      A type that allows a single optional gMonth

    - #### OPTIONAL_G_MONTH_DAY

          public static final SequenceType OPTIONAL_G_MONTH_DAY

      A type that allows a single optional gMonthDay

    - #### OPTIONAL_G_DAY

          public static final SequenceType OPTIONAL_G_DAY

      A type that allows a single optional gDay

    - #### OPTIONAL_DATE_TIME

          public static final SequenceType OPTIONAL_DATE_TIME

      A type that allows a single optional dateTime

    - #### OPTIONAL_DURATION

          public static final SequenceType OPTIONAL_DURATION

      A type that allows a single optional duration

    - #### OPTIONAL_YEAR_MONTH_DURATION

          public static final SequenceType OPTIONAL_YEAR_MONTH_DURATION

      A type that allows a single optional yearMonthDuration

    - #### OPTIONAL_DAY_TIME_DURATION

          public static final SequenceType OPTIONAL_DAY_TIME_DURATION

      A type that allows a single optional dayTimeDuration

    - #### SINGLE_QNAME

          public static final SequenceType SINGLE_QNAME

      A type that allows a single xs:QName

    - #### OPTIONAL_QNAME

          public static final SequenceType OPTIONAL_QNAME

      A type that allows a single optional xs:QName

    - #### OPTIONAL_NOTATION

          public static final SequenceType OPTIONAL_NOTATION

      A type that allows a single optional xs:NOTATION

    - #### OPTIONAL_BASE64_BINARY

          public static final SequenceType OPTIONAL_BASE64_BINARY

      A type that allows a single optional xs:Base64Binary

    - #### OPTIONAL_HEX_BINARY

          public static final SequenceType OPTIONAL_HEX_BINARY

      A type that allows a single optional xs:hexBinary

    - #### OPTIONAL_NUMERIC

          public static final SequenceType OPTIONAL_NUMERIC

      A type that allows an optional numeric value

    - #### SINGLE_NUMERIC

          public static final SequenceType SINGLE_NUMERIC

    - #### OPTIONAL_NODE

          public static final SequenceType OPTIONAL_NODE

      A type that allows zero or one nodes

    - #### SINGLE_NODE

          public static final SequenceType SINGLE_NODE

      A type that allows a single node

    - #### OPTIONAL_DOCUMENT_NODE

          public static final SequenceType OPTIONAL_DOCUMENT_NODE

      A type that allows a single document node

    - #### NODE_SEQUENCE

          public static final SequenceType NODE_SEQUENCE

      A type that allows a sequence of zero or more nodes

    - #### STRING_SEQUENCE

          public static final SequenceType STRING_SEQUENCE

      A type that allows a sequence of zero or more string values

    - #### SINGLE_FUNCTION

          public static final SequenceType SINGLE_FUNCTION

      A type that allows a single function item

    - #### OPTIONAL_FUNCTION_ITEM

          public static final SequenceType OPTIONAL_FUNCTION_ITEM

      A type that allows a sequence of zero or one function items

    - #### FUNCTION_ITEM_SEQUENCE

          public static final SequenceType FUNCTION_ITEM_SEQUENCE

      A type that allows a sequence of zero or mode function items

    - #### EMPTY_SEQUENCE

          public static final SequenceType EMPTY_SEQUENCE

      A type that only permits the empty sequence

    - #### NON_EMPTY_SEQUENCE

          public static final SequenceType NON_EMPTY_SEQUENCE

      A type that only permits a non-empty sequence

    - #### VOID

          public static final SequenceType VOID

      A type that has no instances

  - ### Constructor Detail

    - #### SequenceType

          public SequenceType​(ItemType primaryType,
                              int cardinality)

      Construct an instance of SequenceType.
      Parameters:
        `primaryType` - The item type
        `cardinality` - The required cardinality

  - ### Method Detail

    - #### makeSequenceType

          public static SequenceType makeSequenceType​(ItemType primaryType,
                                                      int cardinality)

      Construct an instance of SequenceType. This is a factory method: it maintains a pool of SequenceType objects to reduce the amount of object creation.
      Parameters:
        `primaryType` - The item type
        `cardinality` - The required cardinality. This must be one of the constants `StaticProperty.EXACTLY_ONE`, `StaticProperty.ALLOWS_ONE_OR_MORE`, etc
      Returns:
        the SequenceType (either a newly created object, or an existing one from the cache)

    - #### getPrimaryType

          public ItemType getPrimaryType()

      Get the "primary" part of this required type. E.g. for type element(*, xs:date) the "primary type" is element()
      Returns:
        The item type code of the primary type

    - #### getCardinality

          public int getCardinality()

      Get the cardinality component of this SequenceType. This is one of the constants `StaticProperty.EXACTLY_ONE`, `StaticProperty.ALLOWS_ONE_OR_MORE`, etc
      Returns:
        the required cardinality
      See Also:
        `Cardinality`

    - #### matches

          public boolean matches​(Sequence value,
                                 TypeHierarchy th)
                          throws XPathException

      Determine whether a given value is a valid instance of this SequenceType
      Parameters:
        `value` - the value to be tested
        `th` - the type hierarchy cache
      Returns:
        true if the value is a valid instance of this type
      Throws:
        `XPathException` - if a dynamic error occurs while evaluating the Sequence (this won't happen if the sequence is grounded)

    - #### explainMismatch

          public java.util.Optional<java.lang.String> explainMismatch​(GroundedValue value,
                                                                      TypeHierarchy th)

      Get extra diagnostic information about why a supplied item does not conform to this item type, if available. If extra information is returned, it should be in the form of a complete sentence, minus the closing full stop. No information should be returned for obvious cases.
      Parameters:
        `value` - the value which has been found not to match this sequence type
        `th` - the TypeHierarchy cache

    - #### toString

          public java.lang.String toString()

      Return a string representation of this SequenceType
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        the string representation as an instance of the XPath SequenceType construct

    - #### toExportString

          public java.lang.String toExportString()

      Return a string representation of this SequenceType suitable for use in stylesheet export files. This differs from the result of toString() in that it will not contain any references to anonymous types. Note that it may also use the Saxon extended syntax for union types and tuple types.
      Returns:
        the string representation as an instance of the XPath SequenceType construct

    - #### toAlphaCode

          public java.lang.String toAlphaCode()

    - #### hashCode

          public int hashCode()

      Returns a hash code value for the object.
      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### equals

          public boolean equals​(java.lang.Object obj)

      Indicates whether some other object is "equal to" this one.
      Overrides:
        `equals` in class `java.lang.Object`

    - #### isSameType

          public boolean isSameType​(SequenceType other,
                                    TypeHierarchy th)