Class TypeHierarchy

  • All Implemented Interfaces:
    java.io.Serializable

    public class TypeHierarchy
    extends java.lang.Object
    implements java.io.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

      Fields 
      Modifier and Type Field Description
      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

      Constructors 
      Constructor Description
      TypeHierarchy​(Configuration config)
      Create the type hierarchy cache for a configuration
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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