Home » xmlbeans-2.5.0-src » org.apache » xmlbeans » [javadoc | source]

    1   /*   Copyright 2004 The Apache Software Foundation
    2    *
    3    *   Licensed under the Apache License, Version 2.0 (the "License");
    4    *   you may not use this file except in compliance with the License.
    5    *   You may obtain a copy of the License at
    6    *
    7    *       http://www.apache.org/licenses/LICENSE-2.0
    8    *
    9    *   Unless required by applicable law or agreed to in writing, software
   10    *   distributed under the License is distributed on an "AS IS" BASIS,
   11    *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   12    *   See the License for the specific language governing permissions and
   13    *  limitations under the License.
   14    */
   15   
   16   package org.apache.xmlbeans;
   17   
   18   import java.math.BigInteger;
   19   
   20   import javax.xml.namespace.QName;
   21   
   22   /**
   23    * Represents a Schema particle definition.
   24    * <p>
   25    * The content model of a complex type is a tree of particles.  Each
   26    * particle is either an {@link #ALL}, {@link #CHOICE}, {@link #SEQUENCE},
   27    * {@link #ELEMENT}, or {@link #WILDCARD}.
   28    * All, choice and sequence particles are groups that can have child
   29    * particles; elements and wildcards are always leaves of the particle tree.
   30    * <p>
   31    * The tree of particles available on a schema type is minimized, that
   32    * is, it already has removed "pointless" particles such as empty
   33    * sequences, nonrepeating sequences with only one item, and so on.
   34    * (<a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#cos-particle-restrict">Pointless particles</a>
   35    * are defined precisely in the XML Schema specification.)
   36    * 
   37    * @see SchemaType#getContentModel
   38    */
   39   public interface SchemaParticle
   40   {
   41       /**
   42        * Returns the particle type ({@link #ALL}, {@link #CHOICE},
   43        * {@link #SEQUENCE}, {@link #ELEMENT}, or {@link #WILDCARD}). 
   44        */ 
   45       int getParticleType();
   46       
   47       /**
   48        * An <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#declare-contentModel">xs:all</a> group.
   49        * See {@link #getParticleType}.
   50        */ 
   51       static final int ALL = 1;
   52       /**
   53        * A <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#declare-contentModel">xs:choice</a> group.
   54        * See {@link #getParticleType}.
   55        */ 
   56       static final int CHOICE = 2;
   57       /**
   58        * A <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#declare-contentModel">xs:sequence</a> group.
   59        * See {@link #getParticleType}.
   60        */ 
   61       static final int SEQUENCE = 3;
   62       /**
   63        * An <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#declare-element">xs:element</a> particle.
   64        * This code means the particle can be coerced to {@link SchemaLocalElement}.
   65        * See {@link #getParticleType}.
   66        */ 
   67       static final int ELEMENT = 4;
   68       /**
   69        * An <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#declare-openness">xs:any</a> particle,
   70        * also known as an element wildcard.
   71        * See {@link #getParticleType}.
   72        */ 
   73       static final int WILDCARD = 5;
   74   
   75       /**
   76        * Returns the minOccurs value for this particle.
   77        * If it's not specified explicitly, this returns BigInteger.ONE.
   78        */
   79       BigInteger getMinOccurs();
   80   
   81       /**
   82        * Returns the maxOccurs value for this particle, or null if it
   83        * is unbounded.
   84        * If it's not specified explicitly, this returns BigInteger.ONE.
   85        */
   86       BigInteger getMaxOccurs();
   87   
   88       /**
   89        * Returns the minOccurs value, pegged to a 32-bit int for
   90        * convenience of a validating state machine that doesn't count
   91        * higher than MAX_INT anyway.
   92        */
   93       public int getIntMinOccurs();
   94   
   95       /**
   96        * Returns the maxOccurs value, pegged to a 32-bit int for
   97        * convenience of a validating state machine that doesn't count
   98        * higher than MAX_INT anyway. Unbounded is given as MAX_INT.
   99        */
  100       public int getIntMaxOccurs();
  101   
  102   
  103       /**
  104        * One if minOccurs == maxOccurs == 1.
  105        */
  106       boolean isSingleton();
  107   
  108       /**
  109        * Applies to sequence, choice, and all particles only: returns an array
  110        * of all the particle children in order.
  111        */
  112       SchemaParticle[] getParticleChildren();
  113   
  114       /**
  115        * Another way to access the particle children.
  116        */
  117       SchemaParticle getParticleChild(int i);
  118   
  119       /**
  120        * The number of children.
  121        */
  122       int countOfParticleChild();
  123   
  124       /**
  125        * True if this particle can start with the given element
  126        * (taking into account the structure of all child particles
  127        * of course).
  128        */
  129       boolean canStartWithElement(QName name);
  130   
  131       /**
  132        * Returns the QNameSet of element names that can be
  133        * accepted at the beginning of this particle.
  134        */
  135       QNameSet acceptedStartNames();
  136   
  137       /**
  138        * True if this particle can be skipped (taking into account
  139        * both the minOcurs as well as the structure of all the
  140        * child particles)
  141        */
  142       boolean isSkippable();
  143   
  144       /**
  145        * For wildcards, returns a QNameSet representing the wildcard.
  146        */
  147       QNameSet getWildcardSet();
  148   
  149       /**
  150        * For wildcards, returns the processing code ({@link #STRICT}, {@link #LAX}, {@link #SKIP}).
  151        */
  152       int getWildcardProcess();
  153   
  154       /** <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#Wildcard_details">Strict wildcard</a> processing. See {@link #getWildcardProcess} */
  155       static final int STRICT = 1;
  156       /** <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#Wildcard_details">Lax wildcard</a> processing. See {@link #getWildcardProcess} */
  157       static final int LAX = 2;
  158       /** <a target="_blank" href="http://www.w3.org/TR/xmlschema-1/#Wildcard_details">Skip wildcard</a> processing. See {@link #getWildcardProcess} */
  159       static final int SKIP = 3;
  160   
  161       /**
  162        * For elements only: the QName for the element use.
  163        * May be unqualified version of referenced element's name.
  164        */
  165       QName getName();
  166       
  167       /**
  168        * For elements only: returns the type of the element.
  169        */
  170       SchemaType getType();
  171   
  172       /**
  173        * For elements only: true if nillable.
  174        */
  175       boolean isNillable();
  176   
  177       /**
  178        * For elements only: returns the default (or fixed) text value
  179        */
  180       String getDefaultText();
  181       
  182       /**
  183        * For elements only: returns the default (or fixed) strongly-typed value
  184        */
  185       XmlAnySimpleType getDefaultValue();
  186   
  187       /**
  188        * For elements only: True if has default. If isFixed, then isDefault is always true.
  189        */
  190       boolean isDefault();
  191   
  192       /**
  193        * For elements only: true if is fixed value.
  194        */
  195       boolean isFixed();
  196       
  197   }

Home » xmlbeans-2.5.0-src » org.apache » xmlbeans » [javadoc | source]