com.saxonica.schema
Class UserAtomicType

java.lang.Object
  extended by com.saxonica.schema.SchemaStructure
      extended by com.saxonica.schema.UserDefinedType
          extended by com.saxonica.schema.UserSimpleType
              extended by com.saxonica.schema.UserAtomicType
All Implemented Interfaces:
SerializableSchemaComponent, UserSchemaComponent, java.io.Serializable, javax.xml.transform.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 class com.saxonica.schema.UserDefinedType
extendedTypes, finalProhibitions
 
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
 
Constructor Summary
UserAtomicType(SchemaAwareConfiguration config)
          Create a 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
 ItemType getPrimitiveItemType()
          Get the primitive type from which this type is derived.
 int getPrimitiveType()
          Get the primitive type from which this type is derived.
 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
 ItemType getSuperType(TypeHierarchy th)
          Get the type from which this item type is derived by restriction.
 SequenceIterator getTypedValue(java.lang.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 isAbstract()
          Determine whether the type is abstract, that is, whether it cannot have instances that are not also instances of some concrete subtype
 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 isPrimitiveType()
          Determine whether the atomic type is a primitive type.
 boolean matchesItem(Item item, boolean allowURIPromotion, Configuration config)
          Test whether a given item conforms to this type
 void serializeVariety(SchemaModelSerializer serializer)
          Serialize the schema component
 java.lang.String toString()
          Produce string representation for use in diagnostic output
 java.lang.String toString(NamePool pool)
          Display the type descriptor for diagnostics
 ValidationFailure validate(AtomicValue primValue, java.lang.CharSequence lexicalValue, NameChecker checker)
          Validate that a primitive atomic value is a valid instance of a type derived from the same primitive type.
 boolean validate(SchemaCompiler compiler)
          Checks the validity of this SimpleType definition.
 ValidationFailure validateContent(java.lang.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
addFacet, analyzeContentExpression, applyWhitespaceNormalization, atomize, checkAgainstFacets, checkTypeDerivationIsOK, convertFacetValues, elaborate, getBuiltInBaseType, getExtendedFacetList, getFacet, getFacets, getLocalFacetList, getTypedValue, getWhitespaceAction, isListType, isSimpleType, isTypeDerivationOK, isUnionType, mergeEnumerationFacets, serialize, setFacetList
 
Methods inherited from class com.saxonica.schema.UserDefinedType
allowsDerivation, containingDeclarationIsElement, getBaseType, getBaseTypeFingerprint, getBaseTypeReference, getBlock, getContainingDeclarationName, getDerivationMethod, getDescription, getDisplayName, getFingerprint, getLocalName, getName, getNameCode, getNamePool, getTargetNamespace, hasRegisteredExtension, isAnonymousType, isComplexType, isExternalType, isSameType, iterateExtensionTypes, registerExtensionType, setBaseTypeReference, setContainingDeclaration, setDerivationMethod, setDerivationMethodName, setExtendedTypes, setFinalProhibitions, setNameCode
 
Methods inherited from class com.saxonica.schema.SchemaStructure
fixup, getColumnNumber, getConfiguration, getFixupStatus, getLineNumber, getPublicId, getSystemId, getValidationStatus, lookForCycles, setConfiguration, setFixupStatus, setLineNumber, setLocator, setSystemId, setValidationStatus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, 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, getName, getNameCode, getSystemId, getTargetNamespace, getTypedValue, isAnonymousType, isComplexType, isSameType, isSimpleType
 
Methods inherited from interface net.sf.saxon.type.SchemaComponent
getValidationStatus
 
Methods inherited from interface com.saxonica.schema.UserSchemaComponent
fixup, lookForCycles
 

Constructor Detail

UserAtomicType

public UserAtomicType(SchemaAwareConfiguration config)
Create a UserAtomicType

Parameters:
config - the Saxon configuration
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 AtomicType
Specified by:
isBuiltInType in interface SimpleType
Returns:
true if this is a 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

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

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)

validate

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

Specified by:
validate in interface UserSchemaComponent
Overrides:
validate in class UserSimpleType
Parameters:
compiler - used for error reporting
Returns:
true when this Schema definition is valid, otherwise false.
Throws:
SchemaException - when this SimpleType definition is invalid.

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 - true if URIs can be promoted to strings
config - the Saxon configuration
Returns:
true if the item is an instance of this type; false otherwise

validateContent

public ValidationFailure validateContent(java.lang.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 - the component used for checking XML 1.0 or XML 1.1 names
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 SequenceIterator getTypedValue(java.lang.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 - the namespace resolver
nameChecker - used to check names against XML 1.0 or XML 1.1 lexical rules
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 - the type hierarchy cache
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

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 string representation for use in diagnostic output

Overrides:
toString in class java.lang.Object

toString

public java.lang.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 java.lang.Object

validate

public ValidationFailure validate(AtomicValue primValue,
                                  java.lang.CharSequence lexicalValue,
                                  NameChecker checker)
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)
checker - checks names against XML 1.0 or XML 1.1 syntax rules
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

serializeVariety

public void serializeVariety(SchemaModelSerializer serializer)
                      throws XPathException
Serialize the schema component

Specified by:
serializeVariety in class UserSimpleType
Throws:
XPathException


Copyright (c) Saxonica Limited. All rights reserved.