All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xmlbeans.QNameSetSpecification Maven / Gradle / Ivy

There is a newer version: 5.0.71
Show newest version
/*   Copyright 2004 The Apache Software Foundation
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.apache.xmlbeans;

import javax.xml.namespace.QName;

import java.util.Set;

/**
 * Represents a lattice of finite and infinite sets of QNames.
 * 
 * @see QNameSet
 */
public interface QNameSetSpecification
{
    /**
     * True if the set contains the given QName.
     *
     * Roughly equivalent to:
     *    (includedURIs() == null ?
     *           excludedURIs().contains(namespace) :
     *           includedURIs().contains(namespace)
     *    ) ?
     *        !excludedQNamesInIncludedURIs().contains(name) :
     *         includedQNamesInExcludedURIs().contains(name)
     */
    boolean contains(QName name);

    /**
     * True if the set is the set of all QNames.
     */
    boolean isAll();

    /**
     * True if the set is empty.
     */
    boolean isEmpty();

    /**
     * True if the parameter is a subset of this set.
     */ 
    boolean containsAll(QNameSetSpecification set);
    
    /**
     * True if is disjoint from the specified set.
     */
    boolean isDisjoint(QNameSetSpecification set);

    /**
     * Returns the intersection with another QNameSet.
     */
    QNameSet intersect(QNameSetSpecification set);

    /**
     * Returns the union with another QNameSet.
     */
    QNameSet union(QNameSetSpecification set);

    /**
     * Return the inverse of this QNameSet. That is the QNameSet which
     * contains all the QNames not contained in this set. In other words
     * for which set.contains(name) != set.inverse().contains(name) for
     * all names.
     */
    QNameSet inverse();

    /**
     * The finite set of namespace URIs that are almost completely excluded from
     * the set (that is, each namespace URI that included in the set with with
     * a finite number of QName exceptions). Null if the set of namespaceURIs
     * that are almost completely included is infinite.
     * 

* Null (meaning almost all URIs excluded) if includedURIs() is non-null; * non-null otherwise. *

* The same set as inverse().includedURIs(). */ Set excludedURIs(); /** * The finite set of namespace URIs that are almost completely included in * the set (that is, each namespace URI that included in the set with with * a finite number of QName exceptions). Null if the set of namespaceURIs * that are almost completely included is infinite. *

* Null (meaning almost all URIs included) if excludedURIs() is non-null; * non-null otherwise. *

* The same as inverse.excludedURIs(). */ Set includedURIs(); /** * The finite set of QNames that are excluded from the set within namespaces * that are otherwise included. Should only contain QNames within namespace * that are within the set includedURIs() (or any URI, if includedURIs() * is null, which means that all URIs are almost completely included). *

* Never null. *

* The same set as inverse().includedQNames(). */ Set excludedQNamesInIncludedURIs(); /** * The finite set of QNames that are included in the set within namespaces * that are otherwise excluded. Should only contain QNames within namespace * that are within the set excludedURIs() (or any URI, if excludedURIs() * is null, which means that all URIs are almost completely excluded). *

* Never null. *

* The same as inverse().excludedQNames(). */ Set includedQNamesInExcludedURIs(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy