sandygao    2002/12/13 09:33:02

  Modified:    java/src/org/apache/xerces/impl/xs/traversers
                        XSDHandler.java
  Log:
  Switching from DOM to DTM for schema parsing.
  
  Revision  Changes    Path
  1.59      +33 -15    
xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
  
  Index: XSDHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- XSDHandler.java   11 Dec 2002 16:01:18 -0000      1.58
  +++ XSDHandler.java   13 Dec 2002 17:33:02 -0000      1.59
  @@ -90,9 +90,12 @@
   import org.apache.xerces.util.DOMUtil;
   import org.apache.xerces.xni.XMLLocator;
   
  +import org.apache.xerces.impl.xs.opti.SchemaParsingConfig;
  +
   import org.apache.xerces.impl.xs.dom.DOMParser;
   import org.apache.xerces.impl.xs.dom.DOMNodePool;
   import org.apache.xerces.impl.xs.dom.ElementNSImpl;
  +import org.apache.xerces.impl.xs.opti.ElementImpl;
   import org.apache.xerces.impl.xs.util.SimpleLocator;
   import org.w3c.dom.Document;
   import org.w3c.dom.Attr;
  @@ -283,7 +286,8 @@
       XSDUniqueOrKeyTraverser fUniqueOrKeyTraverser;
       XSDWildcardTraverser fWildCardTraverser;
   
  -    DOMParser fSchemaParser;
  +    //DOMParser fSchemaParser;
  +    SchemaParsingConfig fSchemaParser;
   
       // these data members are needed for the deferred traversal
       // of local elements.
  @@ -1350,7 +1354,8 @@
                   // If this is the first schema this Handler has
                   // parsed, it has to construct a DOMParser
                   if (fSchemaParser == null) {
  -                    fSchemaParser = new DOMParser();
  +                    //fSchemaParser = new DOMParser();
  +                    fSchemaParser = new SchemaParsingConfig();
                       resetSchemaParserErrorHandler();
                   }
                   fSchemaParser.parse(schemaSource);
  @@ -1923,7 +1928,7 @@
        * no information can be retrieved from the element.
        */
       public SimpleLocator element2Locator(Element e) {
  -        if (!(e instanceof ElementNSImpl))
  +        if (!(e instanceof ElementNSImpl || e instanceof ElementImpl))
               return null;
           
           SimpleLocator l = new SimpleLocator();
  @@ -1936,18 +1941,31 @@
        * true. Returning false means can't extract or store such information.
        */
       public boolean element2Locator(Element e, SimpleLocator l) {
  -        if (!(e instanceof ElementNSImpl) || l == null)
  +        if (l == null)
               return false;
  -            
  -        ElementNSImpl ele = (ElementNSImpl)e;
  -        // get system id from document object
  -        Document doc = ele.getOwnerDocument();
  -        String sid = (String)fDoc2SystemId.get(doc);
  -        // line/column numbers are stored in the element node
  -        int line = ele.getLineNumber();
  -        int column = ele.getColumnNumber();
  -        l.setValues(sid, sid, line, column);
  -        return true;
  +        if (e instanceof ElementImpl) {
  +            ElementImpl ele = (ElementImpl)e;
  +            // get system id from document object
  +            Document doc = ele.getOwnerDocument();
  +            String sid = (String)fDoc2SystemId.get(doc);
  +            // line/column numbers are stored in the element node
  +            int line = ele.getLineNumber();
  +            int column = ele.getColumnNumber();
  +            l.setValues(sid, sid, line, column);
  +            return true;
  +        }
  +        if (e instanceof ElementNSImpl) {
  +            ElementNSImpl ele = (ElementNSImpl)e;
  +            // get system id from document object
  +            Document doc = ele.getOwnerDocument();
  +            String sid = (String)fDoc2SystemId.get(doc);
  +            // line/column numbers are stored in the element node
  +            int line = ele.getLineNumber();
  +            int column = ele.getColumnNumber();
  +            l.setValues(sid, sid, line, column);
  +            return true;
  +        }
  +        return false;
       }
       
       void reportSchemaError(String key, Object[] args, Element ele) {
  
  
  

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

Reply via email to