/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.xml.schema;
import java.net.URI;
/**
* <p>
* Instances of this interface are intended to represent XML Schema Elements.
* </p>
*
* @author dzwiers www.refractions.net
*
* @source $URL$
*/
public interface Element extends ElementGrouping {
/**
* <p>
* Returns True when the instance of this XML Schema Element is abstract,
* false otherwise
* </p>
*
*/
public boolean isAbstract();
/**
* @see Schema#getBlockDefault()
*/
public int getBlock();
/**
* <p>
* This returns the default value for the Element as a String
* </p>
*
*/
public String getDefault();
/**
* @see Schema#getFinalDefault()
*/
public int getFinal();
/**
* <p>
* This returns the fixed value for the Element as a String
* </p>
*
*/
public String getFixed();
/**
* @see Schema#isElementFormDefault()
*/
public boolean isForm();
/**
* <p>
* The Schema ID for this element definition.
* </p>
*
*/
public String getId();
/**
* @see org.geotools.xml.xsi.ElementGrouping#getMaxOccurs()
*/
public int getMaxOccurs();
/**
* @see org.geotools.xml.xsi.ElementGrouping#getMinOccurs()
*/
public int getMinOccurs();
/**
* <p>
* Returns the element declaration's name in the Schema document, and
* element name in the instance document.
* </p>
*
*/
public String getName();
/**
* DOCUMENT ME!
*
*/
public URI getNamespace();
/**
* <p>
* Returns true when the element is nillable, false otherwise
* </p>
*
*/
public boolean isNillable();
/**
* <p>
* This returns a reference to an element representing this element's
* substitution group. This is of particular importance when resolving an
* instance document's value.
* </p>
*
*/
public Element getSubstitutionGroup();
/**
* <p>
* Returns the declared type for this Element in the given Schema.
* </p>
*
*
* @see Type
*/
public Type getType(); // simpleType or complexType
}