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]