/*
* 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>
* This interface is intended to represent the Group construct within XML
* Schemas.
* </p>
*
* <p>
* In many situations it is recommended that groups be flatened out to their
* child declaration, removing the additional layer of indirection. Although
* this optimization is nice, it is imposible to complete this all the time,
* as xml schemas may include publicly viewable Group definitions.
* </p>
*
* @author dzwiers www.refractions.net
*
* @source $URL$
*/
public interface Group extends ElementGrouping {
/**
* <p>
* Returns the Child Schema element (Choice or Sequence) declaring valid
* element sequences for this group.
* </p>
*
*/
public ElementGrouping getChild();
/**
* <p>
* The Group's declaration object id.
* </p>
*
*/
public String getId();
/**
* <p>
* The maximum number of times this group may appear in the instance
* document.
* </p>
*
*/
public int getMaxOccurs();
/**
* <p>
* The minimum number of times this group may appear in the instance
* document.
* </p>
*
*/
public int getMinOccurs();
/**
* <p>
* The group's name in the Schema document
* </p>
*
*/
public String getName();
/**
* DOCUMENT ME!
*
*/
public URI getNamespace();
}