Class GrammarLoader


  • public class GrammarLoader
    extends java.lang.Object
    loads any supported grammar (except XML DTD) by automatically detecting the schema language.

    The static version of loadVGM/loadSchema methods provides simple ways to load a grammar.

    Another way to use GrammarLoader is

    1. To instanciate an object of GrammarLoader
    2. call setXXX methods to configure the parameters
    3. call loadSchema/loadVGM methods (possibly multiple times) to load grammars.
    This approach will give you finer control.
    • Field Detail

      • factory

        private javax.xml.parsers.SAXParserFactory factory
      • strictCheck

        private boolean strictCheck
    • Constructor Detail

      • GrammarLoader

        public GrammarLoader()
    • Method Detail

      • loadVGM

        public static REDocumentDeclaration loadVGM​(java.lang.String url,
                                                    GrammarReaderController controller,
                                                    javax.xml.parsers.SAXParserFactory factory)
                                             throws org.xml.sax.SAXException,
                                                    javax.xml.parsers.ParserConfigurationException,
                                                    java.io.IOException
        parses the specified schema and returns the result as a VGM. This method is an utility method for those applications which don't need AGM (e.g., a single thread application).
        Returns:
        null if there was an error in the grammar.
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadVGM

        public static REDocumentDeclaration loadVGM​(org.xml.sax.InputSource source,
                                                    GrammarReaderController controller,
                                                    javax.xml.parsers.SAXParserFactory factory)
                                             throws org.xml.sax.SAXException,
                                                    javax.xml.parsers.ParserConfigurationException,
                                                    java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadVGM

        public static REDocumentDeclaration loadVGM​(java.lang.String url)
                                             throws org.xml.sax.SAXException,
                                                    javax.xml.parsers.ParserConfigurationException,
                                                    java.io.IOException
        parses the specified schema and returns the result as a VGM. This method uses the default SAX parser and throws an exception if there is an error in the schema.
        Returns:
        non-null valid VGM object.
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadVGM

        public static REDocumentDeclaration loadVGM​(org.xml.sax.InputSource source)
                                             throws org.xml.sax.SAXException,
                                                    javax.xml.parsers.ParserConfigurationException,
                                                    java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadSchema

        public static Grammar loadSchema​(java.lang.String url,
                                         GrammarReaderController controller,
                                         javax.xml.parsers.SAXParserFactory factory)
                                  throws org.xml.sax.SAXException,
                                         javax.xml.parsers.ParserConfigurationException,
                                         java.io.IOException
        parses the specified schema and returns the result as a Grammar object.
        Returns:
        null if there was an error in the grammar.
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadSchema

        public static Grammar loadSchema​(org.xml.sax.InputSource source,
                                         GrammarReaderController controller,
                                         javax.xml.parsers.SAXParserFactory factory)
                                  throws org.xml.sax.SAXException,
                                         javax.xml.parsers.ParserConfigurationException,
                                         java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadSchema

        public static Grammar loadSchema​(java.lang.String source,
                                         GrammarReaderController controller)
                                  throws org.xml.sax.SAXException,
                                         javax.xml.parsers.ParserConfigurationException,
                                         java.io.IOException
        returns a thread-safe AGM object, depending on the language used.
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadSchema

        public static Grammar loadSchema​(org.xml.sax.InputSource source,
                                         GrammarReaderController controller)
                                  throws org.xml.sax.SAXException,
                                         javax.xml.parsers.ParserConfigurationException,
                                         java.io.IOException
        returns a thread-safe AGM object, depending on the language used.
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadSchema

        public static Grammar loadSchema​(java.lang.String url)
                                  throws org.xml.sax.SAXException,
                                         javax.xml.parsers.ParserConfigurationException,
                                         java.io.IOException
        parses the specified schema and returns the result as a Grammar object. This method uses the default SAX parser and throws an exception if there is an error in the schema.
        Returns:
        a non-null valid Grammar.
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • loadSchema

        public static Grammar loadSchema​(org.xml.sax.InputSource source)
                                  throws org.xml.sax.SAXException,
                                         javax.xml.parsers.ParserConfigurationException,
                                         java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • setSAXParserFactory

        public void setSAXParserFactory​(javax.xml.parsers.SAXParserFactory factory)
        sets the factory object which is used to create XML parsers to parse schema files. The factory must be configured to namespace aware.

        If no SAXParserFactory is set, then the default parser is used. (The parser that can be obtained by SAXParserFactory.newInstance()).

      • getSAXParserFactory

        public javax.xml.parsers.SAXParserFactory getSAXParserFactory()
      • setController

        public void setController​(GrammarReaderController controller)
        sets the GrammarReaderController object that will control various aspects of the parsing. If not set, no error report will be done.
      • getController

        public Controller getController()
      • setPool

        public void setPool​(ExpressionPool pool)
        Sets the ExpressionPool object that will be used during the loading process. If not set, a fresh one is used for each time the loadXXX method is called.
      • setStrictCheck

        public void setStrictCheck​(boolean value)
        Sets the strict check flag. If set to true, schema readers will apply stricter checks so that it can find errors in the schema. If set to false, readers will skip some of the checks.

        When this flag is set to false, which is the default, the reader may accept incorrect schemas.

      • getStrictCheck

        public boolean getStrictCheck()
      • parse

        public Grammar parse​(org.xml.sax.InputSource source)
                      throws org.xml.sax.SAXException,
                             javax.xml.parsers.ParserConfigurationException,
                             java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • parse

        public Grammar parse​(java.lang.String url)
                      throws org.xml.sax.SAXException,
                             javax.xml.parsers.ParserConfigurationException,
                             java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • parseVGM

        public REDocumentDeclaration parseVGM​(java.lang.String url)
                                       throws org.xml.sax.SAXException,
                                              javax.xml.parsers.ParserConfigurationException,
                                              java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • parseVGM

        public REDocumentDeclaration parseVGM​(org.xml.sax.InputSource source)
                                       throws org.xml.sax.SAXException,
                                              javax.xml.parsers.ParserConfigurationException,
                                              java.io.IOException
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException
      • hasDTDextension

        private boolean hasDTDextension​(java.lang.String name)
        Checks if the specified name has ".dtd" extension.
      • _loadSchema

        private Grammar _loadSchema​(java.lang.Object source)
                             throws org.xml.sax.SAXException,
                                    javax.xml.parsers.ParserConfigurationException,
                                    java.io.IOException
        Actual "meat" of parsing schema. All other methods will ultimately come down to this method.
        Throws:
        org.xml.sax.SAXException
        javax.xml.parsers.ParserConfigurationException
        java.io.IOException