com.saxonica.schema
Class UserUnionType

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.UserUnionType
All Implemented Interfaces:
SerializableSchemaComponent, Serializable, SourceLocator, SchemaComponent, SchemaType, SimpleType

public class UserUnionType
extends UserSimpleType

A class that represents the XML Schema Union simple-type.

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
UserUnionType(SchemaAwareConfiguration config)
          Creates a new Union type.
 
Method Summary
 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
 List getMemberTypeReferences()
          Get the list of member types
 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
 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 isListType()
          Determine whether this is a list type
 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 isUnionType()
          Return true if this type is a union type (that is, if its variety is union)
 Iterator iterateMemberTypeReferences()
          Returns an Iterator over all the SimpleTypes that are members of a union type.
 void serialize(SchemaSerializer serializer)
          Serialize the schema component
 void setMemberTypeReferences(List members)
          Set the member types of this union type.
 boolean validate(SchemaCompiler compiler)
          Validate this Union, replacing all unresolved forwards references at the same time
 ValidationException validateContent(CharSequence value, NamespaceResolver nsResolver, NameChecker nameChecker)
          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, isSimpleType, isTypeDerivationOK, 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, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.sf.saxon.type.SimpleType
isExternalType
 
Methods inherited from interface net.sf.saxon.type.SchemaType
allowsDerivation, getBaseType, getBlock, getDerivationMethod, getDescription, getDisplayName, getFingerprint, getNameCode, isAnonymousType, isComplexType, isSameType
 
Methods inherited from interface net.sf.saxon.type.SchemaComponent
getValidationStatus
 

Constructor Detail

UserUnionType

public UserUnionType(SchemaAwareConfiguration config)
Creates a new Union type.

Parameters:
config - the Configuration for this Union (Cannot be null)
Method Detail

getCommonAtomicType

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

Returns:
the lowest common supertype of all member types

setMemberTypeReferences

public void setMemberTypeReferences(List members)
Set the member types of this union type.

Parameters:
members - a list of TypeReference objects

getMemberTypeReferences

public List getMemberTypeReferences()
Get the list of member types

Returns:
a List containing TypeReference objects

iterateMemberTypeReferences

public Iterator iterateMemberTypeReferences()
Returns an Iterator over all the SimpleTypes that are members of a union type. Note that this is not transitive: if the union has another union as a membertype, the iteration will return this union rather than its members.

Returns:
For union types, return an Iterator over all TypeReferences to member SimpleTypes.

isAtomicType

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

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

isBuiltInType

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


isListType

public boolean isListType()
Determine whether this is a list type

Specified by:
isListType in interface SimpleType
Overrides:
isListType in class UserSimpleType
Returns:
true if this is a list type

isUnionType

public boolean isUnionType()
Return true if this type is a union type (that is, if its variety is union)

Specified by:
isUnionType in interface SimpleType
Overrides:
isUnionType in class UserSimpleType
Returns:
true for a union type

isNamespaceSensitive

public 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

validate

public boolean validate(SchemaCompiler compiler)
                 throws SchemaException,
                        ValidationException
Validate this Union, replacing all unresolved forwards references at the same time

Overrides:
validate in class UserSimpleType
Throws:
SchemaException
ValidationException

validateContent

public ValidationException validateContent(CharSequence value,
                                           NamespaceResolver nsResolver,
                                           NameChecker nameChecker)
Check whether a given input string is valid according to this 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.
nameChecker -
Returns:
null if validation succeeds; return a ValidationException describing the validation failure if validation fails, unless throwException is true, in which case the exception is thrown rather than being returned.
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
Description copied from interface: SimpleType
Get the typed value corresponding to a given string value, assuming it is valid against this type

Parameters:
value - the string value
resolver - a namespace resolver used to resolve any namespace prefixes appearing in the content of values. Can supply null, in which case any namespace-sensitive content will be rejected.
nameChecker - a NameChecker used in the case of types that are defined in terms of the XML NCName syntax: this is used to check conformance to XML 1.0 or XML 1.1 naming rules, as appropriate
Returns:
an iterator over the atomic sequence comprising the typed value. The objects returned by this SequenceIterator will all be of type AtomicValue
Throws:
ValidationException - if the supplied value is not in the lexical space of the data type

serialize

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

Throws:
IOException

getComponentTypeCode

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



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