/* * @(#)$Id: ImportState.java,v 1.7 2002/03/04 02:12:05 kk122374 Exp $ * * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package com.sun.msv.reader.xmlschema; import com.sun.msv.reader.AbortException; import com.sun.msv.reader.ChildlessState; /** * used to parse <import> element. * * @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a> */ public class ImportState extends ChildlessState { protected void startSelf() { super.startSelf(); final XMLSchemaReader reader = (XMLSchemaReader)this.reader; // TODO: @schemaLocation is optional. String namespace = startTag.getAttribute("namespace"); if( namespace==null ) namespace=""; if( namespace.equals(reader.currentSchema.targetNamespace) ) { reader.reportError( reader.ERR_IMPORTING_SAME_NAMESPACE ); return; } if( reader.isSchemaDefined( reader.getOrCreateSchema(namespace) ) ) // this grammar is already defined. // so ignore it. return; try { reader.switchSource( this, new RootIncludedSchemaState(reader.sfactory.schemaHead(namespace)) ); } catch( AbortException e ) { // recover by ignoring the error } } }