This is the code for parsing both the schema and the xml:

      public static void preParseSchema(final InputStream schema) throws
AmtParseException {

        grammarPool = new XMLGrammarPoolImpl();

        XMLGrammarPreparser preparser = new XMLGrammarPreparser();
        ParserErrorHandler errHandler = new ParserErrorHandler();

        preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null
);
        preparser.setProperty(GRAMMAR_POOL, grammarPool);
        preparser.setFeature(NAMESPACES_FEATURE_ID, true);
        preparser.setFeature(VALIDATION_FEATURE_ID, true);
        preparser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true);
        preparser.setFeature(SCHEMA_FULL_CHECKING_FEATURE_ID, true);
        preparser.setFeature(SCHEMA_ELEMENT_DEFAULT_ID, true);
        preparser.setFeature(SCHEMA_NORMALIZED_VALUE_ID, true);
        preparser.setErrorHandler(errHandler);

        // parse the grammar...
        XMLInputSource inputSource = new XMLInputSource(null,null,null
,schema,null);
            try {

preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA, inputSource);
            } catch (IOException e) {
                  throw new AmtParseException(new ParserError("","",""
,e.getMessage()));
            } catch (XMLParseException e) {
                  //A fatal error has occured and will be reported through
the error handler
            }

            if (errHandler.hasParseErrors())
                  throw new AmtParseException(errHandler.getParseErrors());
      }

      /**
       *  Creates a DOM tree, validates according to the schema in the
grammer pool.
       *  @param newSet the file to be parsed
       *  @throws AmtParseException       when errors occured.
       */
      public static synchronized Document toDomTree(final InputStream
newSet){

        DOMLineParser parser = new DOMLineParser();
        ParserErrorHandler errHandler = new ParserErrorHandler();
        // attempt to activate desired features
            try{
              //validate the xml definition according to the dtd/xml schema
            parser.setFeature(NAMESPACES_FEATURE_ID, true);
            parser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true);
            parser.setFeature(SCHEMA_FULL_CHECKING_FEATURE_ID, true);
            parser.setFeature(SCHEMA_ELEMENT_DEFAULT_ID, true);
            parser.setFeature(SCHEMA_NORMALIZED_VALUE_ID, true);
            parser.setFeature(VALIDATION_FEATURE_ID, true);
            parser.setFeature(DEFERRED_NODE_EXPANSION_ID, false);
            if (grammarPool!=null)
                  parser.setProperty(GRAMMAR_POOL, grammarPool);
            }catch (SAXException se) {
            throw new AmtParseException(new ParserError("","",""
,se.getMessage()));
        }
        parser.setErrorHandler(errHandler);
        InputSource in=new InputSource(newSet);
        try {
                  parser.parse(in);
            } catch (SAXException e) {

            } catch (IOException e) {

            }
        return parser.getDocument();
      }


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to