Class UserAtomicType

    • Constructor Detail

      • UserAtomicType

        public UserAtomicType​(EnterpriseConfiguration config)
        Create a UserAtomicType
        Parameters:
        config - the Saxon configuration
    • Method Detail

      • isPlainType

        public boolean isPlainType()
        Ask whether this is a plain type (a type whose instances are always atomic values)
        Specified by:
        isPlainType in interface ItemType
        Returns:
        true
      • isIdType

        public boolean isIdType()
        Ask whether this type is an ID type. This is defined to be any simple type who typed value may contain atomic values of type xs:ID: that is, it includes types derived from ID by restriction, list, or union. Note that for a node to be treated as an ID, its typed value must be a *single* atomic value of type ID; the type of the node, however, can still allow a list.
        Specified by:
        isIdType in interface AtomicType
        Specified by:
        isIdType in interface SchemaType
        Overrides:
        isIdType in class UserSimpleType
        Returns:
        true if this type is an ID type
      • isBuiltInType

        public boolean isBuiltInType()
        Determine whether this is a built-in type or a user-defined type
        Specified by:
        isBuiltInType in interface AtomicType
        Specified by:
        isBuiltInType in interface SimpleType
        Returns:
        true if this is a built-in type
      • getBasicAlphaCode

        public java.lang.String getBasicAlphaCode()
        Get an alphabetic code representing the type, or at any rate, the nearest built-in type from which this type is derived. The codes are designed so that for any two built-in types A and B, alphaCode(A) is a prefix of alphaCode(B) if and only if A is a supertype of B.
        Specified by:
        getBasicAlphaCode in interface ItemType
        Returns:
        the alphacode for the nearest containing built-in type
      • isPrimitiveType

        public 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, ...)
        Specified by:
        isPrimitiveType in interface AtomicType
        Returns:
        true if the type is considered primitive under the above rules
      • getUType

        public UType getUType()
        Get the corresponding UType. A UType is a union of primitive item types.
        Specified by:
        getUType in interface ItemType
        Returns:
        the smallest UType that subsumes this item type
      • isOrdered

        public boolean isOrdered​(boolean optimistic)
        Determine whether the atomic type is ordered, that is, whether less-than and greater-than comparisons are permitted
        Specified by:
        isOrdered in interface AtomicType
        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

        public boolean isAbstract()
        Determine whether the type is abstract, that is, whether it cannot have instances that are not also instances of some concrete subtype
        Specified by:
        isAbstract in interface AtomicType
        Returns:
        false (always)
      • getStringConverter

        public 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.
        Specified by:
        getStringConverter in interface AtomicType
        Parameters:
        rules - the conversion rules to be used
        Returns:
        a StringConverter to do the conversion, or null if no built-in converter is available.
      • matches

        public boolean matches​(Item item,
                               TypeHierarchy th)
        Test whether a given item conforms to this type
        Specified by:
        matches in interface ItemType
        Specified by:
        matches in interface PlainType
        Parameters:
        item - The item to be tested
        th - the type hierarchy cache
        Returns:
        true if the item is an instance of this type; false otherwise
      • isCompilable

        public boolean isCompilable()
        Ask whether it is possible to generate bytecode to perform validation against this atomic type
        Returns:
        true if bytecode generation is possible
      • validateContent

        public ValidationFailure validateContent​(UnicodeString value,
                                                 NamespaceResolver nsResolver,
                                                 ConversionRules rules)
        Check whether a given input string is valid according to this SimpleType
        Specified by:
        validateContent in interface SimpleType
        Parameters:
        value - the input string to be checked
        nsResolver - a namespace resolver used to resolve namespace prefixes if the type is namespace sensitive. The value supplied may be null; in this case any namespace-sensitive content will throw an UnsupportedOperationException.
        rules - the conversion rules for this Configuration
        Returns:
        null if validation succeeds; return a ValidationFailure describing the validation failure if validation fails.
        Throws:
        java.lang.UnsupportedOperationException - if the type is namespace-sensitive and no namespace resolver is supplied
      • getTypedValue

        public AtomicValue getTypedValue​(UnicodeString value,
                                         NamespaceResolver resolver,
                                         ConversionRules rules)
                                  throws ValidationException
        Get the typed value corresponding to a given string value, assuming it is valid against this type
        Specified by:
        getTypedValue in interface SimpleType
        Parameters:
        value - the string value
        resolver - the namespace resolver
        rules - the conversion rules for the Saxon configuration
        Returns:
        an iterator over the atomic sequence comprising the typed value
        Throws:
        ValidationException - if the supplied value is not in the lexical space of the data type
      • getPrimitiveType

        public int getPrimitiveType()
        Get the primitive type from which this type is derived. For the definition of primitive types, see Type.isPrimitiveAtomicType(int)
        Specified by:
        getPrimitiveType in interface ItemType
        Returns:
        the type code of the primitive type
      • isNamespaceSensitive

        public boolean isNamespaceSensitive()
        Test whether this simple type is namespace-sensitive, that is, whether it is derived from xs:QName or xs:NOTATION
        Specified by:
        isNamespaceSensitive in interface HyperType
        Returns:
        true if this type is derived from xs:QName or xs:NOTATION
      • getAtomizedItemType

        public AtomicType getAtomizedItemType()
        Get the item type of the atomic values that will be produced when an item of this type is atomized
        Specified by:
        getAtomizedItemType in interface ItemType
        Returns:
        the best available item type of the atomic values that will be produced when an item of this type is atomized, or null if it is known that atomization will throw an error.
      • isAtomizable

        public boolean isAtomizable​(TypeHierarchy th)
        Ask whether values of this type are atomizable
        Specified by:
        isAtomizable in interface ItemType
        Parameters:
        th - The type hierarchy cache
        Returns:
        true unless it is known that these items will be elements with element-only content, in which case return false
      • getSharedInstance

        public java.lang.String getSharedInstance​(java.lang.String value)
        Get an instance of the facet value that is stored in the schema rather than the instance
        Parameters:
        value - the value required
        Returns:
        a string which is equal to the value required, but which if possible is the instance held in the compiled schema, reducing storage requirements in instances.
      • toString

        public java.lang.String toString()
        Produce a string representation of the type name. If the type is anonymous, an internally-allocated type name will be returned.
        Overrides:
        toString in class UserDefinedType
        Returns:
        the name of the atomic type in the form Q{uri}local
      • toExportString

        public java.lang.String toExportString()
        Return a string representation of this ItemType 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. The default implementation returns the result of calling toString().
        Specified by:
        toExportString in interface ItemType
        Returns:
        the string representation as an instance of the XPath SequenceType construct
      • hashCode

        public int hashCode()
        Returns a hash code value for the object.
        Overrides:
        hashCode in class java.lang.Object
      • validate

        public ValidationFailure validate​(AtomicValue primValue,
                                          UnicodeString lexicalValue,
                                          ConversionRules rules)
        Validate that a primitive atomic value is a valid instance of a type derived from the same primitive type.
        Specified by:
        validate in interface AtomicType
        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 used for this configuration
        Returns:
        null if the value is valid; otherwise, a ValidationFailure object indicating the nature of the error.
        Throws:
        java.lang.UnsupportedOperationException - in the case of an external object type
      • getPlainMemberTypes

        public java.util.List<? extends PlainType> getPlainMemberTypes()
        Get the set of atomic types that are subsumed by this type
        Specified by:
        getPlainMemberTypes in interface PlainType
        Returns:
        for an atomic type, the type itself; for a union type, the set of atomic types in its transitive membership