net.sf.saxon.type
Class TypeHierarchy

java.lang.Object
  extended by net.sf.saxon.type.TypeHierarchy
All Implemented Interfaces:
Serializable

public class TypeHierarchy
extends Object
implements Serializable

This class exists to provide answers to questions about the type hierarchy. Because such questions are potentially expensive, it caches the answers. There is one instance of this class for a Configuration.

See Also:
Serialized Form

Field Summary
static int DISJOINT
          Constant denoting relationship between two types: A is disjoint from B
static int OVERLAPS
          Constant denoting relationship between two types: A overlaps B
static int SAME_TYPE
          Constant denoting relationship between two types: A is the same type as B
static int SUBSUMED_BY
          Constant denoting relationship between two types: A is subsumed by B
static int SUBSUMES
          Constant denoting relationship between two types: A subsumes B
 
Constructor Summary
TypeHierarchy(Configuration config)
          Create the type hierarchy cache for a configuration
 
Method Summary
 Configuration getConfiguration()
          Get the Saxon configuration to which this type hierarchy belongs
 boolean isIdCode(int typeCode)
          Test whether a type annotation code represents the type xs:ID or one of its subtypes
 boolean isIdrefsCode(int typeCode)
          Test whether a type annotation code represents the type xs:IDREF, xs:IDREFS or one of their subtypes
 boolean isSubType(ItemType subtype, ItemType supertype)
          Determine whether type A is type B or one of its subtypes, recursively.
 int relationship(ItemType t1, ItemType t2)
          Determine the relationship of one item type to another.
static int schemaTypeRelationship(SchemaType s1, SchemaType s2)
          Get the relationship of two schema types to each other
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SAME_TYPE

public static final int SAME_TYPE
Constant denoting relationship between two types: A is the same type as B

See Also:
Constant Field Values

SUBSUMES

public static final int SUBSUMES
Constant denoting relationship between two types: A subsumes B

See Also:
Constant Field Values

SUBSUMED_BY

public static final int SUBSUMED_BY
Constant denoting relationship between two types: A is subsumed by B

See Also:
Constant Field Values

OVERLAPS

public static final int OVERLAPS
Constant denoting relationship between two types: A overlaps B

See Also:
Constant Field Values

DISJOINT

public static final int DISJOINT
Constant denoting relationship between two types: A is disjoint from B

See Also:
Constant Field Values
Constructor Detail

TypeHierarchy

public TypeHierarchy(Configuration config)
Create the type hierarchy cache for a configuration

Parameters:
config - the configuration
Method Detail

getConfiguration

public Configuration getConfiguration()
Get the Saxon configuration to which this type hierarchy belongs

Returns:
the configuration

isSubType

public boolean isSubType(ItemType subtype,
                         ItemType supertype)
Determine whether type A is type B or one of its subtypes, recursively. "Subtype" here means a type that is subsumed, that is, a type whose instances are a subset of the instances of the other type.

Parameters:
subtype - identifies the first type
supertype - identifies the second type
Returns:
true if the first type is the second type or is subsumed by the second type

relationship

public int relationship(ItemType t1,
                        ItemType t2)
Determine the relationship of one item type to another.

Parameters:
t1 - the first item type
t2 - the second item type
Returns:
SAME_TYPE if the types are the same; SUBSUMES if the first type subsumes the second (that is, all instances of the second type are also instances of the first); SUBSUMED_BY if the second type subsumes the first; OVERLAPS if the two types overlap (have a non-empty intersection, but neither subsumes the other); DISJOINT if the two types are disjoint (have an empty intersection)

isIdCode

public boolean isIdCode(int typeCode)
Test whether a type annotation code represents the type xs:ID or one of its subtypes

Parameters:
typeCode - the type annotation to be tested
Returns:
true if the type annotation represents an xs:ID

isIdrefsCode

public boolean isIdrefsCode(int typeCode)
Test whether a type annotation code represents the type xs:IDREF, xs:IDREFS or one of their subtypes

Parameters:
typeCode - the type annotation to be tested
Returns:
true if the type annotation represents an xs:IDREF or xs:IDREFS or a subtype thereof

schemaTypeRelationship

public static int schemaTypeRelationship(SchemaType s1,
                                         SchemaType s2)
Get the relationship of two schema types to each other

Parameters:
s1 - the first type
s2 - the second type
Returns:
the relationship of the two types, as one of the constants SAME_TYPE, SUBSUMES, SUBSUMED_BY, DISJOINT


Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.