1 /* 2 * Copyright (c) 1997, 2015, 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 com.sun.xml.internal.xsom.parser.SchemaDocument; 29 30 import java.util.Iterator; 31 import java.util.Map; 32 33 /** 34 * Schema. 35 * 36 * Container of declarations that belong to the same target namespace. 37 * 38 * @author 39 * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) 40 */ 41 public interface XSSchema extends XSComponent 42 { 43 /** 44 * Gets the target namespace of the schema. 45 * 46 * @return 47 * can be empty, but never be null. 48 */ 49 String getTargetNamespace(); 50 51 /** 52 * Gets all the {@link XSAttributeDecl}s in this schema 53 * keyed by their local names. 54 */ 55 Map<String,XSAttributeDecl> getAttributeDecls(); 56 Iterator<XSAttributeDecl> iterateAttributeDecls(); 57 XSAttributeDecl getAttributeDecl(String localName); 58 59 /** 60 * Gets all the {@link XSElementDecl}s in this schema. 61 */ 62 Map<String,XSElementDecl> getElementDecls(); 63 Iterator<XSElementDecl> iterateElementDecls(); 64 XSElementDecl getElementDecl(String localName); 65 66 /** 67 * Gets all the {@link XSAttGroupDecl}s in this schema. 68 */ 69 Map<String,XSAttGroupDecl> getAttGroupDecls(); 70 Iterator<XSAttGroupDecl> iterateAttGroupDecls(); 71 XSAttGroupDecl getAttGroupDecl(String localName); 72 73 /** 74 * Gets all the {@link XSModelGroupDecl}s in this schema. 75 */ 76 Map<String,XSModelGroupDecl> getModelGroupDecls(); 77 Iterator<XSModelGroupDecl> iterateModelGroupDecls(); 78 XSModelGroupDecl getModelGroupDecl(String localName); 79 80 /** 81 * Gets all the {@link XSType}s in this schema (union of 82 * {@link #getSimpleTypes()} and {@link #getComplexTypes()} 83 */ 84 Map<String,XSType> getTypes(); 85 Iterator<XSType> iterateTypes(); 86 XSType getType(String localName); 87 88 /** 89 * Gets all the {@link XSSimpleType}s in this schema. 90 */ 91 Map<String,XSSimpleType> getSimpleTypes(); 92 Iterator<XSSimpleType> iterateSimpleTypes(); 93 XSSimpleType getSimpleType(String localName); 94 95 /** 96 * Gets all the {@link XSComplexType}s in this schema. 97 */ 98 Map<String,XSComplexType> getComplexTypes(); 99 Iterator<XSComplexType> iterateComplexTypes(); 100 XSComplexType getComplexType(String localName); 101 102 /** 103 * Gets all the {@link XSNotation}s in this schema. 104 */ 105 Map<String,XSNotation> getNotations(); 106 Iterator<XSNotation> iterateNotations(); 107 XSNotation getNotation(String localName); 108 109 /** 110 * Gets all the {@link XSIdentityConstraint}s in this schema, 111 * keyed by their names. 112 */ 113 Map<String,XSIdentityConstraint> getIdentityConstraints(); 114 115 /** 116 * Gets the identity constraint of the given name, or null if not found. 117 */ 118 XSIdentityConstraint getIdentityConstraint(String localName); 119 120 /** 121 * Sine an {@link XSSchema} is not necessarily defined in 122 * one schema document (for example one schema can span across 123 * many documents through {@code <xs:include>s}.), 124 * so this method always returns null. 125 * 126 * @deprecated 127 * Since this method always returns null, if you are calling 128 * this method from {@link XSSchema} and not from {@link XSComponent}, 129 * there's something wrong with your code. 130 */ 131 SchemaDocument getSourceDocument(); 132 133 /** 134 * Gets the root schema set that includes this schema. 135 * 136 * @return never null. 137 */ 138 XSSchemaSet getRoot(); 139 }