View Javadoc
1   /*
2    * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package com.sun.xml.internal.xsom;
27  
28  import javax.xml.namespace.NamespaceContext;
29  import java.util.Iterator;
30  import java.util.Collection;
31  
32  /**
33   * Set of {@link XSSchema} objects.
34   *
35   * @author
36   *  Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
37   */
38  public interface XSSchemaSet
39  {
40      XSSchema getSchema(String targetNamespace);
41      XSSchema getSchema(int idx);
42      int getSchemaSize();
43      Iterator<XSSchema> iterateSchema();
44  
45      /**
46       * Gets all {@link XSSchema}s in a single collection.
47       */
48      Collection<XSSchema> getSchemas();
49  
50      XSType getType(String namespaceURI, String localName);
51      XSSimpleType getSimpleType(String namespaceURI, String localName);
52      XSAttributeDecl getAttributeDecl(String namespaceURI, String localName);
53      XSElementDecl getElementDecl(String namespaceURI, String localName);
54      XSModelGroupDecl getModelGroupDecl(String namespaceURI, String localName);
55      XSAttGroupDecl getAttGroupDecl(String namespaceURI, String localName);
56      XSComplexType getComplexType(String namespaceURI, String localName);
57      XSIdentityConstraint getIdentityConstraint(String namespaceURI, String localName);
58  
59      /** Iterates all element declarations in all the schemas. */
60      Iterator<XSElementDecl> iterateElementDecls();
61      /** Iterates all type definitions in all the schemas. */
62      Iterator<XSType> iterateTypes();
63      /** Iterates all atribute declarations in all the schemas. */
64      Iterator<XSAttributeDecl> iterateAttributeDecls();
65      /** Iterates all attribute group declarations in all the schemas. */
66      Iterator<XSAttGroupDecl> iterateAttGroupDecls();
67      /** Iterates all model group declarations in all the schemas. */
68      Iterator<XSModelGroupDecl> iterateModelGroupDecls();
69      /** Iterates all simple type definitions in all the schemas. */
70      Iterator<XSSimpleType> iterateSimpleTypes();
71      /** Iterates all complex type definitions in all the schemas. */
72      Iterator<XSComplexType> iterateComplexTypes();
73      /** Iterates all notation declarations in all the schemas. */
74      Iterator<XSNotation> iterateNotations();
75      /**
76       * Iterates all identity constraints in all the schemas.
77       */
78      Iterator<XSIdentityConstraint> iterateIdentityConstraints();
79  
80      // conceptually static methods
81      XSComplexType getAnyType();
82      XSSimpleType getAnySimpleType();
83      XSContentType getEmpty();
84  
85      /**
86       * Evaluates a schema component designator against this schema component
87       * and returns the resulting schema components.
88       *
89       * @throws IllegalArgumentException
90       *      if SCD is syntactically incorrect.
91       * @param scd
92       *      Schema component designator. See {@link SCD} for more details.
93       * @param nsContext
94       *      The namespace context in which SCD is evaluated. Cannot be null.
95       * @return
96       *      Can be empty but never null.
97       */
98      Collection<XSComponent> select(String scd, NamespaceContext nsContext);
99  
100     /**
101      * Evaluates a schema component designator against this schema component
102      * and returns the first resulting schema component.
103      *
104      * @throws IllegalArgumentException
105      *      if SCD is syntactically incorrect.
106      * @param scd
107      *      Schema component designator. See {@link SCD} for more details.
108      * @param nsContext
109      *      The namespace context in which SCD is evaluated. Cannot be null.
110      * @return
111      *      null if the SCD didn't match anything. If the SCD matched more than one node,
112      *      the first one will be returned.
113      */
114     XSComponent selectSingle(String scd, NamespaceContext nsContext);
115 }