Class SchemaStructure

    • Constructor Detail

      • SchemaStructure

        public SchemaStructure()
    • Method Detail

      • getSystemId

        public java.lang.String getSystemId()
        Get the system identifier (URI) of the schema module (XML document) containing the definition of this component.
        Specified by:
        getSystemId in interface Location
        Specified by:
        getSystemId in interface org.xml.sax.Locator
        Specified by:
        getSystemId in interface javax.xml.transform.SourceLocator
        Returns:
        the URI of the containing module.
      • getPublicId

        public java.lang.String getPublicId()
        Get the public ID of the containing module, if known.
        Specified by:
        getPublicId in interface Location
        Specified by:
        getPublicId in interface org.xml.sax.Locator
        Specified by:
        getPublicId in interface javax.xml.transform.SourceLocator
        Returns:
        This information is not currently maintained, the method always returns null.
      • getLineNumber

        public int getLineNumber()
        Get the line number of the element defining this schema component, within its module. This will be as delivered by the SAX2 parser: that is, the line number of an element is generally the line number on which its start tag ends.
        Specified by:
        getLineNumber in interface Location
        Specified by:
        getLineNumber in interface org.xml.sax.Locator
        Specified by:
        getLineNumber in interface javax.xml.transform.SourceLocator
        Returns:
        the line number where the relevant element can be found.
      • getColumnNumber

        public int getColumnNumber()
        Get the column number of the element defining this schema component.
        Specified by:
        getColumnNumber in interface Location
        Specified by:
        getColumnNumber in interface org.xml.sax.Locator
        Specified by:
        getColumnNumber in interface javax.xml.transform.SourceLocator
        Returns:
        -1: this information is not maintained.
      • saveLocation

        public Location saveLocation()
        Get an immutable copy of this Location object. By default Location objects may be mutable, so they should not be saved for later use. The result of this operation holds the same location information, but in an immutable form.
        Specified by:
        saveLocation in interface Location
        Returns:
        an immutable copy (which may be the original object, if it is already immutable)
      • setLocator

        public void setLocator​(javax.xml.transform.SourceLocator locator)
        Set the location information for this schema component.
        Parameters:
        locator - the location information.
      • setSystemId

        public void setSystemId​(java.lang.String systemId)
        Set the system Id
        Parameters:
        systemId - the systemId (the URI of the schema document in which the component is declared)
      • setLineNumber

        public void setLineNumber​(int lineNumber)
        Set the line number
        Parameters:
        lineNumber - the line number of the declaration of the component within its schema document
      • setSchemaDocumentURI

        public void setSchemaDocumentURI​(java.lang.String uri)
        Set the base URI of the containing xs:schema element. This will normally be the same as the systemId, unless the schema document is made up of multiple XML entities
        Parameters:
        uri - the base URI of the schema document
      • getSchemaDocumentURI

        public java.lang.String getSchemaDocumentURI()
        Get the base URI of the containing xs:schema element. This will normally be the same as the systemId, unless the schema document is made up of multiple XML entities
        Returns:
        the base URI of the containing schema document
      • setGeneratedId

        public void setGeneratedId​(java.lang.String generatedId)
        Set the generated ID, used to test whether two components are "identical"
        Parameters:
        generatedId - the ID acting as a unique identifier
      • getGeneratedId

        public java.lang.String getGeneratedId()
        Get the generated ID, used to test whether two components are "identical"
        Returns:
        the generated ID
      • validate

        public boolean validate​(SchemaCompiler compiler)
                         throws SchemaException
        Checks the validity of this Schema component.
        Specified by:
        validate in interface UserSchemaComponent
        Parameters:
        compiler - the schema compiler
        Returns:
        true when this Schema definition is valid, otherwise false.
        Throws:
        SchemaException - if the ErrorListener decides that an error is fatal.
      • getComponentAsFunction

        public FunctionItem getComponentAsFunction()
        Description copied from interface: SchemaComponent
        Get the schema component in the form of a function item. This allows schema information to be made visible to XSLT or XQuery code. The function makes available the contents of the schema component as defined in the XSD specification. The function takes a string as argument representing a property name, and returns the corresponding property of the schema component. There is also a property "class" which returns the kind of schema component, for example "Attribute Declaration".
        Specified by:
        getComponentAsFunction in interface SchemaComponent
        Returns:
        the schema component represented as a function from property names to property values.
      • getValidationStatus

        public SchemaValidationStatus getValidationStatus()
        Get the current validation status
        Specified by:
        getValidationStatus in interface SchemaComponent
        Returns:
        an integer code indicating whether validation has not yet been started, is underway, has completed successfully, or has completed unsuccessfully
      • isValidationNeeded

        public boolean isValidationNeeded()
        Ask if validation is needed
        Returns:
        true if the component has not yet been validated
      • setValidationStatus

        public void setValidationStatus​(SchemaValidationStatus status)
        Set the validation status
        Parameters:
        status - an integer code indicating whether validation has not yet been started, is underway, has completed successfully, or has completed unsuccessfully
      • getFixupStatus

        public SchemaValidationStatus getFixupStatus()
        Get the current fixup status
        Returns:
        an integer code indicating whether fixup of component references has not yet been started, is underway, has completed successfully, or has completed unsuccessfully
      • setFixupStatus

        public void setFixupStatus​(SchemaValidationStatus status)
        Set the fixup status
        Parameters:
        status - an integer code indicating whether fixup of component references has not yet been started, is underway, has completed successfully, or has completed unsuccessfully
      • setConfiguration

        public void setConfiguration​(EnterpriseConfiguration config)
        Set the configuration containing this structure
        Parameters:
        config - the Saxon configuration
      • getConfiguration

        public EnterpriseConfiguration getConfiguration()
        Get the schema containing this structure
        Returns:
        the Saxon configuration
      • setRedefinitionLevel

        public void setRedefinitionLevel​(int level)
        Set the redefinition level. This is zero for a component that has not been redefined; for a redefinition of a level-0 component, it is 1; for a redefinition of a level-N component, it is N+1. This concept is used to support the notion of "pervasive" redefinition: if a component is redefined at several levels, the top level wins, but it is an error to have two versions of the component at the same redefinition level.
        Parameters:
        level - the redefinition level
      • getRedefinitionLevel

        public int getRedefinitionLevel()
        Get the redefinition level. This is zero for a component that has not been redefined; for a redefinition of a level-0 component, it is 1; for a redefinition of a level-N component, it is N+1. This concept is used to support the notion of "pervasive" redefinition: if a component is redefined at several levels, the top level wins, but it is an error to have two versions of the component at the same redefinition level.
        Specified by:
        getRedefinitionLevel in interface SchemaComponent
        Returns:
        the redefinition level
      • lookForCycles

        public void lookForCycles​(java.util.Stack<SchemaComponent> references,
                                  SchemaCompiler compiler)
                           throws SchemaException
        This method is called to look for cycles. The object implementing this method is required (a) to raise an exception if the object itself appears in the list of references, (b) to add itself to the list of references, and (c) to call the lookForCycles method on all the objects that it references. This is a dummy implementation that does nothing; it must be overridden for components that can participate in cycles.
        Specified by:
        lookForCycles in interface UserSchemaComponent
        Parameters:
        references - A stack of objects that contain direct or indirect references to this object, and that must therefore not be referred to from this object.
        compiler - the schema compiler
        Throws:
        SchemaException - if cycles are found
      • fixup

        public boolean fixup​(SchemaCompiler compiler)
                      throws SchemaException
        Fixup references from this schema component to others
        Specified by:
        fixup in interface UserSchemaComponent
        Parameters:
        compiler - the SchemaCompiler, used primarily for reporting errors
        Returns:
        true if all references were fixed up successfully, false if dangling references were found
        Throws:
        SchemaException
      • elaborate

        public void elaborate​(SchemaCompiler compiler)
                       throws SchemaException
        Elaborate the schema component: after reloading a serialized schema component model, this expands the component with derived information needed during validation episodes. The model is assumed to be valid.
        Specified by:
        elaborate in interface UserSchemaComponent
        Parameters:
        compiler - the schema compiler
        Throws:
        SchemaException
      • makeXPathExpressionPropertyRecord

        protected static FunctionItem makeXPathExpressionPropertyRecord​(java.lang.String conditionText,
                                                                        NamespaceResolver nsResolver,
                                                                        java.lang.String baseURI)
        Helper method to make an XPathExpression property record
        Returns:
        a function that delivers the information in this component
      • hasSameLocation

        public boolean hasSameLocation​(SchemaStructure other)
        Ask whether this schema component should be considered identical to another schema component
        Parameters:
        other - the other schema component
        Returns:
        true if (on balance of probabilities...) these two structures represent the same schema component. This is considered to be the case if they appear to derive from the same source declaration