/*
* @(#)$Id: DivInModuleState.java,v 1.10 2002/06/24 19:57:59 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.relax.core;
import java.util.Map;
import org.xml.sax.Locator;
//import com.sun.msv.datatype.xsd.XSDatatype;
//import com.sun.msv.datatype.xsd.XSDatatypeImpl;
import com.sun.msv.reader.datatype.xsd.XSDatatypeExp;
import com.sun.msv.util.StartTagInfo;
import com.sun.msv.grammar.Expression;
import com.sun.msv.reader.*;
import com.sun.msv.reader.datatype.xsd.XSTypeOwner;
/**
* parses <div> element under <module> element.
*
* @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a>
*/
public class DivInModuleState extends SimpleState implements ExpressionOwner, XSTypeOwner
{
/** gets reader in type-safe fashion */
protected RELAXCoreReader getReader() { return (RELAXCoreReader)reader; }
protected State createChildState( StartTagInfo tag ) {
if(tag.localName.equals("div")) return getReader().getStateFactory().divInModule(this,tag);
if(tag.localName.equals("hedgeRule")) return getReader().getStateFactory().hedgeRule(this,tag);
if(tag.localName.equals("tag")) return getReader().getStateFactory().tag(this,tag);
if(tag.localName.equals("attPool")) return getReader().getStateFactory().attPool(this,tag);
if(tag.localName.equals("include")) return getReader().getStateFactory().include(this,tag);
if(tag.localName.equals("interface")) return getReader().getStateFactory().interface_(this,tag);
if(tag.localName.equals("elementRule")) return getReader().getStateFactory().elementRule(this,tag);
if(tag.localName.equals("simpleType")) return getReader().getStateFactory().simpleType(this,tag);
return null;
}
// do nothing. declarations register themselves by themselves.
public void onEndChild( Expression exp ) {}
public String getTargetNamespaceUri() { return ""; }
public void onEndChild( XSDatatypeExp type ) {
// user-defined simple types
final String typeName = type.name;
if( typeName==null ) {
// top-level simpleType must define a named type
reader.reportError( reader.ERR_MISSING_ATTRIBUTE, "simpleType", "name" );
return; // recover by ignoring this declaration
}
// memorize this type.
getReader().addUserDefinedType(type);
}
}