Interface AtomicType

All Superinterfaces:
ItemType, PlainType, SchemaComponent, SchemaType, SimpleType
All Known Implementing Classes:
BuiltInAtomicType, ErrorType

public interface AtomicType extends SimpleType, PlainType
Interface for atomic types (these are either built-in atomic types or user-defined atomic types). An AtomicType is both an ItemType (a possible type for items in a sequence) and a SchemaType (a possible type for validating and annotating nodes).
  • Method Details

    • getGenre

      default Genre getGenre()
      Determine the Genre (top-level classification) of this type
      Specified by:
      getGenre in interface ItemType
      Returns:
      the Genre to which this type belongs, specifically Genre.ATOMIC
    • validate

      ValidationFailure validate(AtomicValue primValue, CharSequence lexicalValue, ConversionRules rules)
      Validate that a primitive atomic value is a valid instance of a type derived from the same primitive type.
      Parameters:
      primValue - the value in the value space of the primitive type.
      lexicalValue - the value in the lexical space. If null, the string value of primValue is used. This value is checked against the pattern facet (if any)
      rules - the conversion rules for this configuration
      Returns:
      null if the value is valid; otherwise, a ValidationFailure object indicating the nature of the error.
      Throws:
      UnsupportedOperationException - in the case of an external object type
    • isOrdered

      boolean isOrdered(boolean optimistic)
      Determine whether the atomic type is ordered, that is, whether less-than and greater-than comparisons are permitted
      Parameters:
      optimistic - if true, the function takes an optimistic view, returning true if ordering comparisons are available for some subtype. This mainly affects xs:duration, where the function returns true if optimistic is true, false if it is false.
      Returns:
      true if ordering operations are permitted
    • isAbstract

      boolean isAbstract()
      Determine whether the type is abstract, that is, whether it cannot have instances that are not also instances of some concrete subtype
      Returns:
      true if the type is abstract
    • isPrimitiveType

      boolean isPrimitiveType()
      Determine whether the atomic type is a primitive type. The primitive types are the 19 primitive types of XML Schema, plus xs:integer, xs:dayTimeDuration and xs:yearMonthDuration; xs:untypedAtomic; and all supertypes of these (xs:anyAtomicType, xs:numeric, ...)
      Returns:
      true if the type is considered primitive under the above rules
    • isBuiltInType

      boolean isBuiltInType()
      Determine whether the atomic type is a built-in type. The built-in atomic types are the 41 atomic types defined in XML Schema, plus xs:dayTimeDuration and xs:yearMonthDuration, xs:untypedAtomic, and all supertypes of these (xs:anyAtomicType, xs:numeric, ...)
      Specified by:
      isBuiltInType in interface SimpleType
      Returns:
      true if this is a built-in type
    • getTypeName

      StructuredQName getTypeName()
      Get the name of this type as a StructuredQName, unless the type is anonymous, in which case return null
      Specified by:
      getTypeName in interface PlainType
      Returns:
      the name of the atomic type, or null if the type is anonymous.
    • getStringConverter

      StringConverter getStringConverter(ConversionRules rules)
      Get a StringConverter, an object which converts strings in the lexical space of this data type to instances (in the value space) of the data type.
      Parameters:
      rules - the conversion rules to be used
      Returns:
      a StringConverter to do the conversion, or null if no built-in converter is available.
    • explainMismatch

      default Optional<String> explainMismatch(Item item, 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.
      Specified by:
      explainMismatch in interface ItemType
      Parameters:
      item - the item that doesn't match this type
      th - the type hierarchy cache
      Returns:
      optionally, a message explaining why the item does not match the type