com.saxonica.schema
Class UserAtomicType

java.lang.Object
  extended by com.saxonica.schema.SchemaStructure
      extended by com.saxonica.schema.SchemaTypeImpl
          extended by com.saxonica.schema.UserSimpleType
              extended by com.saxonica.schema.UserAtomicType
All Implemented Interfaces:
SerializableSchemaComponent, Serializable, SourceLocator, AtomicType, ItemType, SchemaComponent, SchemaType, SimpleType

public class UserAtomicType
extends UserSimpleType
implements AtomicType

An object belonging to this class represents an atomic type: either a built-in atomic type, or a user-defined atomic type. There is at most one AtomicType object for each distinct type in the schema (so equality can safely be tested using the == operator).

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface net.sf.saxon.type.SchemaType
DERIVATION_EXTENSION, DERIVATION_LIST, DERIVATION_RESTRICTION, DERIVATION_UNION, DERIVE_BY_SUBSTITUTION
 
Fields inherited from interface net.sf.saxon.type.SchemaComponent
FIXED_UP, INCOMPLETE, INVALID, UNVALIDATED, VALIDATED, VALIDATING
 
Fields inherited from interface com.saxonica.schema.SerializableSchemaComponent
ALL_COMPOSITOR, ATOMIC_TYPE, ATTRIBUTE_DECL, ATTRIBUTE_GROUP, ATTRIBUTE_GROUP_REF, ATTRIBUTE_USE, ATTRIBUTE_WILDCARD, CHOICE_COMPOSITOR, COMPLEX_TYPE, ELEMENT_DECL, ELEMENT_PARTICLE, ELEMENT_WILDCARD, FACET, KEY, KEYREF, LIST_TYPE, MODEL_GROUP, MODEL_GROUP_REF, NOTATION, SEQUENCE_COMPOSITOR, UNION_TYPE, UNIQUE
 
Constructor Summary
UserAtomicType()
           
 
Method Summary
 AtomicType getAtomizedItemType()
          Get the item type of the atomic values that will be produced when an item of this type is atomized
 AtomicType getCommonAtomicType()
          Get the most specific possible atomic type that all items in this SimpleType belong to
 int getComponentTypeCode()
          Get a unique number identifying the type of component
 ItemType getPrimitiveItemType()
          Get the primitive type from which this type is derived.
 int getPrimitiveType()
          Get the primitive type from which this type is derived.
 ItemType getSuperType(TypeHierarchy th)
          Get the type from which this item type is derived by restriction.
 SequenceIterator getTypedValue(CharSequence value, NamespaceResolver resolver, NameChecker nameChecker)
          Get the typed value corresponding to a given string value, assuming it is valid against this type
 int hashCode()
          Returns a hash code value for the object.
 boolean isAtomicType()
          Test whether this Simple Type is an atomic type
 boolean isBuiltInType()
          Determine whether this is a built-in type or a user-defined type
 boolean isNamespaceSensitive()
          Test whether this simple type is namespace-sensitive, that is, whether it is derived from xs:QName or xs:NOTATION
 boolean isOrdered()
          Determine whether the atomic type is ordered, that is, whether less-than and greater-than comparisons are permitted
 boolean matchesItem(Item item, boolean allowURIPromotion, Configuration config)
          Test whether a given item conforms to this type
 void serialize(SchemaSerializer serializer)
          Serialize the schema component
 AtomicValue setDerivedTypeLabel(AtomicValue primValue, CharSequence lexicalValue, boolean validate)
          Factory method to create values of a derived atomic type.
 String toString()
          Produce string representation for use in diagnostic output
 String toString(NamePool pool)
          Display the type descriptor for diagnostics
 boolean validate(SchemaCompiler compiler)
          Checks the validity of this SimpleType definition.
 ValidationException validateContent(CharSequence value, NamespaceResolver nsResolver, NameChecker checker)
          Check whether a given input string is valid according to this SimpleType
 
Methods inherited from class com.saxonica.schema.UserSimpleType
analyzeContentExpression, applyWhitespaceNormalization, atomize, checkAgainstFacets, checkTypeDerivationIsOK, getBuiltInBaseType, getFacet, getFacetCollection, getFacetList, getFacets, getFacets, getTypedValue, getWhitespaceAction, isListType, isSimpleType, isTypeDerivationOK, isUnionType, setFacetCollection
 
Methods inherited from class com.saxonica.schema.SchemaTypeImpl
allowsDerivation, containingDeclarationIsElement, getBaseType, getBaseTypeFingerprint, getBaseTypeReference, getBlock, getContainingDeclarationName, getDerivationMethod, getDescription, getDisplayName, getFingerprint, getLocalName, getNameCode, getNamePool, isAnonymousType, isComplexType, isExternalType, isSameType, setBaseTypeReference, setContainingDeclaration, setDerivationMethod, setDerivationMethodName, setFinalProhibitions, setLocalName, setNameCode, setNamePool
 
Methods inherited from class com.saxonica.schema.SchemaStructure
getColumnNumber, getConfiguration, getFixupStatus, getLineNumber, getPublicId, getSystemId, getValidationStatus, lookForCycles, setConfiguration, setFixupStatus, setLineNumber, setLocator, setSystemId, setValidationStatus
 
Methods inherited from class java.lang.Object
equals, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.saxon.type.SimpleType
getBuiltInBaseType, getWhitespaceAction, isExternalType, isListType, isUnionType
 
Methods inherited from interface net.sf.saxon.type.SchemaType
allowsDerivation, analyzeContentExpression, atomize, checkTypeDerivationIsOK, getBaseType, getBlock, getDerivationMethod, getDescription, getDisplayName, getFingerprint, getNameCode, getTypedValue, isAnonymousType, isComplexType, isSameType, isSimpleType
 
Methods inherited from interface net.sf.saxon.type.SchemaComponent
getValidationStatus
 

Constructor Detail

UserAtomicType

public UserAtomicType()
Method Detail

isAtomicType

public boolean isAtomicType()
Test whether this Simple Type is an atomic type

Specified by:
isAtomicType in interface ItemType
Specified by:
isAtomicType in interface SchemaType
Specified by:
isAtomicType in interface SimpleType
Overrides:
isAtomicType in class UserSimpleType
Returns:
true, this is an atomic type

isBuiltInType

public boolean isBuiltInType()
Determine whether this is a built-in type or a user-defined type

Specified by:
isBuiltInType in interface SimpleType

getCommonAtomicType

public AtomicType getCommonAtomicType()
Get the most specific possible atomic type that all items in this SimpleType belong to

Specified by:
getCommonAtomicType in interface SimpleType
Returns:
the lowest common supertype of all member types

isOrdered

public boolean isOrdered()
Determine whether the atomic type is ordered, that is, whether less-than and greater-than comparisons are permitted

Specified by:
isOrdered in interface AtomicType
Returns:
true if ordering operations are permitted

validate

public boolean validate(SchemaCompiler compiler)
                 throws SchemaException,
                        ValidationException
Checks the validity of this SimpleType definition.

Overrides:
validate in class UserSimpleType
Throws:
SchemaException - when this SimpleType definition is invalid.
ValidationException

matchesItem

public boolean matchesItem(Item item,
                           boolean allowURIPromotion,
                           Configuration config)
Test whether a given item conforms to this type

Specified by:
matchesItem in interface ItemType
Parameters:
item - The item to be tested
allowURIPromotion -
config -
Returns:
true if the item is an instance of this type; false otherwise

validateContent

public ValidationException validateContent(CharSequence value,
                                           NamespaceResolver nsResolver,
                                           NameChecker checker)
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.
checker -
Returns:
null if validation succeeds; return a ValidationException describing the validation failure if validation fails.
Throws:
UnsupportedOperationException - if the type is namespace-sensitive and no namespace resolver is supplied

getTypedValue

public SequenceIterator getTypedValue(CharSequence value,
                                      NamespaceResolver resolver,
                                      NameChecker nameChecker)
                               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 -
nameChecker -
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

getSuperType

public ItemType getSuperType(TypeHierarchy th)
Get the type from which this item type is derived by restriction. This is the supertype in the XPath type heirarchy, as distinct from the Schema base type: this means that the supertype of xs:boolean is xs:anyAtomicType, whose supertype is item() (rather than xs:anySimpleType).

Specified by:
getSuperType in interface ItemType
Parameters:
th -
Returns:
the supertype, or null if this type is item()

getPrimitiveItemType

public ItemType getPrimitiveItemType()
Get the primitive type from which this type is derived. For the definition of primitive types, see Type.isPrimitiveType(int)

Specified by:
getPrimitiveItemType in interface ItemType
Returns:
the type code of the primitive type

getPrimitiveType

public int getPrimitiveType()
Get the primitive type from which this type is derived. For the definition of primitive types, see Type.isPrimitiveType(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 SimpleType
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

toString

public String toString()
Produce string representation for use in diagnostic output

Overrides:
toString in class Object

toString

public String toString(NamePool pool)
Display the type descriptor for diagnostics

Specified by:
toString in interface ItemType

hashCode

public int hashCode()
Returns a hash code value for the object.

Overrides:
hashCode in class Object

setDerivedTypeLabel

public AtomicValue setDerivedTypeLabel(AtomicValue primValue,
                                       CharSequence lexicalValue,
                                       boolean validate)
Factory method to create values of a derived atomic type. This method is not used to create values of a built-in type, even one that is not primitive.

Specified by:
setDerivedTypeLabel in interface AtomicType
Parameters:
primValue - the value in the value space of the primitive type. This object will have its type label changed to the new type.
lexicalValue - the value as supplied. If null, the string value of primValue is used. The lexical value is this value after applying the whitespace facet. The lexical value is checked against the pattern facet (if any)
validate - true if the value is to be validated against the facets of the derived type; false if the caller knows that the value is already valid.
Returns:
the derived atomic value if validation succeeds. Otherwise, an ErrorValue that encapsulates the exception that occurred. It is the caller's responsibility to check for this.

serialize

public void serialize(SchemaSerializer serializer)
               throws IOException
Serialize the schema component

Specified by:
serialize in interface SerializableSchemaComponent
Throws:
IOException

getComponentTypeCode

public int getComponentTypeCode()
Get a unique number identifying the type of component

Specified by:
getComponentTypeCode in interface SerializableSchemaComponent


Copyright (C) Michael H. Kay. All rights reserved.