com.sun.msv.datatype.xsd

Interface XSDatatype

All Superinterfaces:
Datatype, Serializable, DatabindableDatatype
Known Implementing Classes:
AnyURIType, Base64BinaryType, BooleanType, BuiltinAtomicType, ByteType, ConcreteType, DataTypeWithFacet, DateTimeType, DateType, DoubleType, DurationType, EntityType, EnumerationFacet, ErrorType, FinalComponent, FloatType, FractionDigitsFacet, GDayType, GMonthDayType, GMonthType, GYearMonthType, GYearType, HexBinaryType, IDREFType, IDType, IntegerType, IntType, LanguageType, LengthFacet, ListType, LongType, MaxExclusiveFacet, MaxInclusiveFacet, MaxLengthFacet, MinExclusiveFacet, MinInclusiveFacet, MinLengthFacet, NameType, NcnameType, NegativeIntegerType, NmtokenType, NonNegativeIntegerType, NonPositiveIntegerType, NormalizedStringType, NumberType, PatternFacet, PositiveIntegerType, Proxy, QnameType, RangeFacet, ShortType, SimpleURType, StringType, TimeType, TokenType, TotalDigitsFacet, UnionType, UnsignedByteType, UnsignedIntType, UnsignedLongType, UnsignedShortType, WhiteSpaceFacet, XSDatatypeImpl

public interface XSDatatype
extends Serializable, DatabindableDatatype

Publicly accesible interface of W3C XML Schema datatype (simple type).

The most important methods are defined in the org.relaxng.datatype.Datatype interface. This interface provides additional information which is not covered by Datatype interface. Also, this interface provides various simple type component properties which are defined in the spec.

Application can use this interface to interact with datatype objects.

Author:
Kohsuke KAWAGUCHI

Field Summary

static int
APPLICABLE
indicates the specified facet is applicable to this type.
static int
DERIVATION_BY_LIST
static int
DERIVATION_BY_RESTRICTION
static int
DERIVATION_BY_UNION
static String
FACET_ENUMERATION
static String
FACET_FRACTIONDIGITS
static String
FACET_LENGTH
static String
FACET_MAXEXCLUSIVE
static String
FACET_MAXINCLUSIVE
static String
FACET_MAXLENGTH
static String
FACET_MINEXCLUSIVE
static String
FACET_MININCLUSIVE
static String
FACET_MINLENGTH
static String
FACET_PATTERN
static String
FACET_TOTALDIGITS
static String
FACET_WHITESPACE
static int
FIXED
indicates the specified facet is fixed in this type and therefore not appliable.
static int
NOT_ALLOWED
indicates the specified facet is not appliable to this type by definition.
static int
VARIETY_ATOMIC
static int
VARIETY_LIST
static int
VARIETY_UNION
static String
XMLSCHEMA_NSURI

Method Summary

String
convertToLexicalValue(Object valueObject, SerializationContext context)
converts value object back to the corresponding value in the lexical space.
String
displayName()
gets the displayable name of this type.
XSDatatype
getAncestorBuiltinType()
Gets the nearest ancestor built-in type.
String[]
getApplicableFacetNames()
Gets the names of all applicable facets.
XSDatatype
getBaseType()
gets the base type of this type.
DataTypeWithFacet
getFacetObject(String facetName)
gets the facet object that restricts the specified facet.
String
getName()
gets the local name of the type.
String
getNamespaceUri()
Gets the namespace URI of this simple type definition.
int
getVariety()
gets the variety of this simple type.
boolean
isAlwaysValid()
Returns true if this datatype is known to accept any string.
boolean
isDerivedTypeOf(XSDatatype baseType, boolean restrictionAllowed)
tests if this type is a derived type of the specified type.
int
isFacetApplicable(String facetName)
returns if the specified facet is applicable to this datatype.
boolean
isFinal(int derivationType)
checks if this type is declared as final for the specified kind of derivation.

Methods inherited from interface com.sun.msv.datatype.DatabindableDatatype

createJavaObject, getJavaObjectType, serializeJavaObject

Field Details

APPLICABLE

public static final int APPLICABLE
indicates the specified facet is applicable to this type. One of the possible return value from the isFacetApplicable method.
Field Value:
0

DERIVATION_BY_LIST

public static final int DERIVATION_BY_LIST
Field Value:
2

DERIVATION_BY_RESTRICTION

public static final int DERIVATION_BY_RESTRICTION
Field Value:
1

DERIVATION_BY_UNION

public static final int DERIVATION_BY_UNION
Field Value:
4

FACET_ENUMERATION

public static final String FACET_ENUMERATION

FACET_FRACTIONDIGITS

public static final String FACET_FRACTIONDIGITS

FACET_LENGTH

public static final String FACET_LENGTH

FACET_MAXEXCLUSIVE

public static final String FACET_MAXEXCLUSIVE

FACET_MAXINCLUSIVE

public static final String FACET_MAXINCLUSIVE

FACET_MAXLENGTH

public static final String FACET_MAXLENGTH

FACET_MINEXCLUSIVE

public static final String FACET_MINEXCLUSIVE

FACET_MININCLUSIVE

public static final String FACET_MININCLUSIVE

FACET_MINLENGTH

public static final String FACET_MINLENGTH

FACET_PATTERN

public static final String FACET_PATTERN

FACET_TOTALDIGITS

public static final String FACET_TOTALDIGITS

FACET_WHITESPACE

public static final String FACET_WHITESPACE

FIXED

public static final int FIXED
indicates the specified facet is fixed in this type and therefore not appliable. One of the possible return value from the isFacetApplicable method.
Field Value:
-1

NOT_ALLOWED

public static final int NOT_ALLOWED
indicates the specified facet is not appliable to this type by definition. One of the possible return value from the isFacetApplicable method.
Field Value:
-2

VARIETY_ATOMIC

public static final int VARIETY_ATOMIC
Field Value:
1

VARIETY_LIST

public static final int VARIETY_LIST
Field Value:
2

VARIETY_UNION

public static final int VARIETY_UNION
Field Value:
3

XMLSCHEMA_NSURI

public static final String XMLSCHEMA_NSURI

Method Details

convertToLexicalValue

public String convertToLexicalValue(Object valueObject,
                                    SerializationContext context)
            throws IllegalArgumentException
converts value object back to the corresponding value in the lexical space.

This method does the reverse operation of the createValue method. The returned string is not necessarily the canonical representation. Also note that the implementation may accept invalid values without throwing IllegalArgumentException. To make sure that the result is actually a valid representation, call the isValid method.

Be careful not to confuse this method with The serializeJavaObject method, which is defined in the DatabindableDatatype method.

Parameters:
context - Context information that will be possibly used for the conversion. Currently, this object is used only by QName, but may be extended in the future.

displayName

public String displayName()
gets the displayable name of this type. This method always return something. It is useful to provide a message to the user.

This method is an ad-hoc method and there is no corresponding property in the spec.


getAncestorBuiltinType

public XSDatatype getAncestorBuiltinType()
Gets the nearest ancestor built-in type.

This method traverses the inheritance chain from this datatype to the root type (anySimpleType) and return the first built-in type it finds.

For example, if you derive a type Foo from NCName and Bar from Foo, then this method returns NCName.

Returns:
Always return non-null valid object.

getApplicableFacetNames

public String[] getApplicableFacetNames()
Gets the names of all applicable facets.

getBaseType

public XSDatatype getBaseType()
gets the base type of this type. This method returns null if this object represents the simple ur-type.

This method is intended to capture the semantics of the base type definition property of the simple type component, but there is an important difference.

Specifically, if you derive a type D from another type B, then calling D.getBaseType() does not necessarily return B. Instead, it may return an intermediate object (that represents a facet). Calling the getBaseType method recursively will eventually return B.


getFacetObject

public DataTypeWithFacet getFacetObject(String facetName)
gets the facet object that restricts the specified facet. This method can be used to access various details of how facets are applied to this datatype.
Returns:
null if no such facet object exists.

getName

public String getName()

getNamespaceUri

public String getNamespaceUri()
Gets the namespace URI of this simple type definition.

getVariety

public int getVariety()
gets the variety of this simple type.
Returns:
VARIETY_ATOMIC, VARIETY_LIST, or VARIETY_UNION.

isAlwaysValid

public boolean isAlwaysValid()
Returns true if this datatype is known to accept any string. This is just a hint that allows the client code to do certain optimization.

This method can return false even if the datatype actually accepts any string. That is, it's perfectly OK for any datatype to return false from this method.


isDerivedTypeOf

public boolean isDerivedTypeOf(XSDatatype baseType,
                               boolean restrictionAllowed)
tests if this type is a derived type of the specified type.

This method is an implementation of "Type Derivation OK (Simple)" of the spec. Therefore use caution if what you want is a casual method because this method may cause a lot of unintuitive result.

Note to implementors Use the static version of this method defined in the XSDatatypeImpl class. You don't need to implement this method from scratch.

Parameters:
restrictionAllowed - This test needs "a subset of {extension,restriction,list,union} (of which only restriction is actually relevant). If this flag is set to true, this method behaves as if the empty set is passed as the set. This is usually what you want if you're simply trying to check the derivation relationship.

If this flag is set to false, this method behaves as if {restriction} is passed as the set.


isFacetApplicable

public int isFacetApplicable(String facetName)
returns if the specified facet is applicable to this datatype.
Returns:

isFinal

public boolean isFinal(int derivationType)
Parameters:
derivationType - one of pre-defined values (DERIVATION_BY_XXX).