Package net.sf.saxon.type

## Interface PlainType

- All Superinterfaces:
    `ItemType`
  All Known Subinterfaces:
    `AtomicType`
  All Known Implementing Classes:
    `BuiltInAtomicType`, `ErrorType`, `LocalUnionType`, `NumericType`, `UserAtomicType`, `UserUnionType`

      public interface PlainType
      extends ItemType

  A "plain type" is either an atomic type, or a union type that (a) imposes no restrictions other than those imposed by its member types, and (b) has exclusively plain types as its member types

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface net.sf.saxon.type.ItemType

      `ItemType.WithSequenceTypeCache`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.Iterable<? extends PlainType>` | `getPlainMemberTypes()` | Get the list of plain types that are subsumed by this type
    `AtomicType` | `getPrimitiveItemType()` | Redeclare getPrimitiveItemType() to return a more specific result type Get the primitive item type corresponding to this item type.
    `StructuredQName` | `getTypeName()` | Get the name of this type as a structured QName
    `boolean` | `isNamespaceSensitive()` | Test whether this type is namespace sensitive, that is, if a namespace context is needed to translate between the lexical space and the value space.
    `boolean` | `matches​(Item item, TypeHierarchy th)` | Test whether a given item conforms to this type

    - ### Methods inherited from interface net.sf.saxon.type.ItemType

      `explainMismatch, getAtomizedItemType, getBasicAlphaCode, getDefaultPriority, getFullAlphaCode, getGenre, getNormalizedDefaultPriority, getPrimitiveType, getUType, isAtomicType, isAtomizable, isPlainType, isTrueItemType, toExportString, toString`

- - ### Method Detail

    - #### getTypeName

          StructuredQName getTypeName()

      Get the name of this type as a structured QName
      Returns:
        the name of this type. If the type is anonymous, an internally-generated type name is returned

    - #### isNamespaceSensitive

          boolean isNamespaceSensitive()

      Test whether this type is namespace sensitive, that is, if a namespace context is needed to translate between the lexical space and the value space. This is true for types derived from, or containing, QNames and NOTATIONs
      Returns:
        true if any of the member types is namespace-sensitive, or if namespace sensitivity cannot be determined because there are components missing from the schema.

    - #### getPlainMemberTypes

          java.lang.Iterable<? extends PlainType> getPlainMemberTypes()
                                                               throws MissingComponentException

      Get the list of plain types that are subsumed by this type
      Returns:
        for an atomic type, the type itself; for a plain union type, the list of plain types in its transitive membership
      Throws:
        `MissingComponentException`

    - #### matches

          boolean matches​(Item item,
                          TypeHierarchy th)

      Test whether a given item conforms to this type
      Specified by:
        `matches` in interface `ItemType`
      Parameters:
        `item` - The item to be tested
        `th` - The type hierarchy cache. Currently used only when matching function items.
      Returns:
        true if the item is an instance of this type; false otherwise

    - #### getPrimitiveItemType

          AtomicType getPrimitiveItemType()

      Redeclare getPrimitiveItemType() to return a more specific result type Get the primitive item type corresponding to this item type. For anyAtomicValue and union types it is Type.ATOMIC_VALUE. For numeric it is Type.NUMBER. For other atomic types it is the primitive type as defined in XML Schema, except that integer, xs:dayTimeDuration, and xs:yearMonthDuration are considered to be primitive types.
      Specified by:
        `getPrimitiveItemType` in interface `ItemType`
      Returns:
        the corresponding primitive type (this is an instance of BuiltInAtomicType in all cases except where this type is xs:error. The class ErrorType does not inherit from BuiltInAtomicType because of multiple inheritance problems).