/*
 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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 General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package com.sun.xml.internal.xsom;

import java.util.List;
import java.util.Set;

Element declaration.
Author: Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
/** * Element declaration. * * @author * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) */
public interface XSElementDecl extends XSDeclaration, XSTerm {
Gets the type of this element declaration.
Returns: always non-null.
/** * Gets the type of this element declaration. * @return * always non-null. */
XSType getType(); boolean isNillable();
Gets the substitution head of this element, if any. Otherwise null.
/** * Gets the substitution head of this element, if any. * Otherwise null. */
XSElementDecl getSubstAffiliation();
Returns all the XSIdentityConstraints in this element decl.
Returns: never null, but can be empty.
/** * Returns all the {@link XSIdentityConstraint}s in this element decl. * * @return * never null, but can be empty. */
List<XSIdentityConstraint> getIdentityConstraints();
Checks the substitution excluded property of the schema component. IOW, this checks the value of the final attribute (plus finalDefault).
Params:
/** * Checks the substitution excluded property of the schema component. * * IOW, this checks the value of the <code>final</code> attribute * (plus <code>finalDefault</code>). * * @param method * Possible values are {@link XSType#EXTENSION} or * <code>XSType.RESTRICTION</code>. */
boolean isSubstitutionExcluded(int method);
Checks the diallowed substitution property of the schema component. IOW, this checks the value of the block attribute (plus blockDefault).
Params:
  • method – Possible values are XSType.EXTENSION, XSType.RESTRICTION, or XSType.SUBSTITUTION
/** * Checks the diallowed substitution property of the schema component. * * IOW, this checks the value of the <code>block</code> attribute * (plus <code>blockDefault</code>). * * @param method * Possible values are {@link XSType#EXTENSION}, * <code>XSType.RESTRICTION</code>, or <code>XSType.SUBSTITUTION</code> */
boolean isSubstitutionDisallowed(int method); boolean isAbstract();
Returns the element declarations that can substitute this element.

IOW, this set returns all the element decls that satisfies the "Substitution Group OK" constraint.

Returns: nun-null valid array. The return value always contains this element decl itself.
Deprecated: this method allocates a new array every time, so it could be inefficient when working with a large schema. Use getSubstitutables() instead.
/** * Returns the element declarations that can substitute * this element. * * <p> * IOW, this set returns all the element decls that satisfies * <a href="http://www.w3.org/TR/xmlschema-1/#cos-equiv-derived-ok-rec"> * the "Substitution Group OK" constraint. * </a> * * @return * nun-null valid array. The return value always contains this element * decl itself. * * @deprecated * this method allocates a new array every time, so it could be * inefficient when working with a large schema. Use * {@link #getSubstitutables()} instead. */
XSElementDecl[] listSubstitutables();
Returns the element declarations that can substitute this element.

IOW, this set returns all the element decls that satisfies the "Substitution Group OK" constraint.

Note that the above clause does NOT check for abstract elements. So abstract elements may still show up in the returned set.

Returns: nun-null unmodifiable list. The returned list always contains this element decl itself.
/** * Returns the element declarations that can substitute * this element. * * <p> * IOW, this set returns all the element decls that satisfies * <a href="http://www.w3.org/TR/xmlschema-1/#cos-equiv-derived-ok-rec"> * the "Substitution Group OK" constraint. * </a> * * <p> * Note that the above clause does <em>NOT</em> check for * abstract elements. So abstract elements may still show up * in the returned set. * * @return * nun-null unmodifiable list. * The returned list always contains this element decl itself. */
Set<? extends XSElementDecl> getSubstitutables();
Returns true if this element declaration can be validly substituted by the given declaration.

Just a short cut of getSubstitutables().contain(e);

/** * Returns true if this element declaration can be validly substituted * by the given declaration. * * <p> * Just a short cut of {@code getSubstitutables().contain(e);} */
boolean canBeSubstitutedBy(XSElementDecl e); // TODO: identitiy constraints // TODO: scope XmlString getDefaultValue(); XmlString getFixedValue();
Used for javadoc schema generation
Returns: null if form attribute not present, true if form attribute present and set to qualified, false if form attribute present and set to unqualified.
/** * Used for javadoc schema generation * * @return * null if form attribute not present, * true if form attribute present and set to qualified, * false if form attribute present and set to unqualified. */
Boolean getForm(); }