1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291
/* * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the "License"). You may not use this file except * in compliance with the License. * * You can obtain a copy of the license at * https://jaxp.dev.java.net/CDDLv1.0.html. * See the License for the specific language governing * permissions and limitations under the License. * * When distributing Covered Code, include this CDDL * HEADER in each file and include the License file at * https://jaxp.dev.java.net/CDDLv1.0.html * If applicable add the following below this CDDL HEADER * with the fields enclosed by brackets "[]" replaced with * your own identifying information: Portions Copyright * [year] [name of copyright owner] */ /* * $Id: XMLEntityReader.java,v 1.3 2005/11/03 17:02:21 jeffsuttor Exp $ * @(#)NamespaceContext.java 1.14 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. */ package javax.xml.namespace; import java.util.Iterator; /** * <p>Interface for read only XML Namespace context processing.</p> * * <p>An XML Namespace has the properties:</p> * <ul> * <li>Namespace URI: * Namespace name expressed as a URI to which the prefix is bound</li> * <li>prefix: syntactically, this is the part of the attribute name * following the <code>XMLConstants.XMLNS_ATTRIBUTE</code> * ("xmlns") in the Namespace declaration</li> * </ul> * <p>example: * <code><element xmlns:prefix="http://Namespace-name-URI"></code></p> * * <p>All <code>get*(*)</code> methods operate in the current scope * for Namespace URI and prefix resolution.</p> * * <p>Note that a Namespace URI can be bound to * <strong>multiple</strong> prefixes in the current scope. This can * occur when multiple <code>XMLConstants.XMLNS_ATTRIBUTE</code> * ("xmlns") Namespace declarations occur in the same Start-Tag and * refer to the same Namespace URI. e.g.<br /> * <pre> * <element xmlns:prefix1="http://Namespace-name-URI" * xmlns:prefix2="http://Namespace-name-URI"> * </pre> * This can also occur when the same Namespace URI is used in multiple * <code>XMLConstants.XMLNS_ATTRIBUTE</code> ("xmlns") Namespace * declarations in the logical parent element hierarchy. e.g.<br /> * <pre> * <parent xmlns:prefix1="http://Namespace-name-URI"> * <child xmlns:prefix2="http://Namespace-name-URI"> * ... * </child> * </parent> * </pre></p> * * <p>A prefix can only be bound to a <strong>single</strong> * Namespace URI in the current scope.</p> * * @author <a href="mailto:Jeff.Suttor@Sun.com">Jeff Suttor</a> * @version $Revision: 1.2 $, $Date: 2005/06/10 03:50:28 $ * @see javax.xml.XMLConstants * javax.xml.XMLConstants for declarations of common XML values * @see <a href="http://www.w3.org/TR/xmlschema-2/#QName"> * XML Schema Part2: Datatypes</a> * @see <a href="http://www.w3.org/TR/REC-xml-names/#ns-qualnames"> * Namespaces in XML</a> * @see <a href="http://www.w3.org/XML/xml-names-19990114-errata"> * Namespaces in XML Errata</a> * @since 1.5 */ public interface NamespaceContext { /** * <p>Get Namespace URI bound to a prefix in the current scope.</p> * * <p>When requesting a Namespace URI by prefix, the following * table describes the returned Namespace URI value for all * possible prefix values:</p> * * <table border="2" rules="all" cellpadding="4"> * <thead> * <tr> * <td align="center" colspan="2"> * <code>getNamespaceURI(prefix)</code> * return value for specified prefixes * </td> * </tr> * <tr> * <td>prefix parameter</td> * <td>Namespace URI return value</td> * </tr> * </thead> * <tbody> * <tr> * <td><code>DEFAULT_NS_PREFIX</code> ("")</td> * <td>default Namespace URI in the current scope or * <code>{@link * javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI("")} * </code> * when there is no default Namespace URI in the current scope</td> * </tr> * <tr> * <td>bound prefix</td> * <td>Namespace URI bound to prefix in current scope</td> * </tr> * <tr> * <td>unbound prefix</td> * <td> * <code>{@link * javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI("")} * </code> * </td> * </tr> * <tr> * <td><code>XMLConstants.XML_NS_PREFIX</code> ("xml")</td> * <td><code>XMLConstants.XML_NS_URI</code> * ("http://www.w3.org/XML/1998/namespace")</td> * </tr> * <tr> * <td><code>XMLConstants.XMLNS_ATTRIBUTE</code> ("xmlns")</td> * <td><code>XMLConstants.XMLNS_ATTRIBUTE_NS_URI</code> * ("http://www.w3.org/2000/xmlns/")</td> * </tr> * <tr> * <td><code>null</code></td> * <td><code>IllegalArgumentException</code> is thrown</td> * </tr> * </tbody> * </table> * * @param prefix prefix to look up * * @return Namespace URI bound to prefix in the current scope * * @throws IllegalArgumentException When <code>prefix</code> is * <code>null</code> */ String getNamespaceURI(String prefix); /** * <p>Get prefix bound to Namespace URI in the current scope.</p> * * <p>To get all prefixes bound to a Namespace URI in the current * scope, use {@link #getPrefixes(String namespaceURI)}.</p> * * <p>When requesting a prefix by Namespace URI, the following * table describes the returned prefix value for all Namespace URI * values:</p> * * <table border="2" rules="all" cellpadding="4"> * <thead> * <tr> * <th align="center" colspan="2"> * <code>getPrefix(namespaceURI)</code> return value for * specified Namespace URIs * </th> * </tr> * <tr> * <th>Namespace URI parameter</th> * <th>prefix value returned</th> * </tr> * </thead> * <tbody> * <tr> * <td><default Namespace URI></td> * <td><code>XMLConstants.DEFAULT_NS_PREFIX</code> ("") * </td> * </tr> * <tr> * <td>bound Namespace URI</td> * <td>prefix bound to Namespace URI in the current scope, * if multiple prefixes are bound to the Namespace URI in * the current scope, a single arbitrary prefix, whose * choice is implementation dependent, is returned</td> * </tr> * <tr> * <td>unbound Namespace URI</td> * <td><code>null</code></td> * </tr> * <tr> * <td><code>XMLConstants.XML_NS_URI</code> * ("http://www.w3.org/XML/1998/namespace")</td> * <td><code>XMLConstants.XML_NS_PREFIX</code> ("xml")</td> * </tr> * <tr> * <td><code>XMLConstants.XMLNS_ATTRIBUTE_NS_URI</code> * ("http://www.w3.org/2000/xmlns/")</td> * <td><code>XMLConstants.XMLNS_ATTRIBUTE</code> ("xmlns")</td> * </tr> * <tr> * <td><code>null</code></td> * <td><code>IllegalArgumentException</code> is thrown</td> * </tr> * </tbody> * </table> * * @param namespaceURI URI of Namespace to lookup * * @return prefix bound to Namespace URI in current context * * @throws IllegalArgumentException When <code>namespaceURI</code> is * <code>null</code> */ String getPrefix(String namespaceURI); /** * <p>Get all prefixes bound to a Namespace URI in the current * scope.</p> * * <p>An Iterator over String elements is returned in an arbitrary, * <strong>implementation dependent</strong>, order.</p> * * <p><strong>The <code>Iterator</code> is * <em>not</em> modifiable. e.g. the * <code>remove()</code> method will throw * <code>UnsupportedOperationException</code>.</strong></p> * * <p>When requesting prefixes by Namespace URI, the following * table describes the returned prefixes value for all Namespace * URI values:</p> * * <table border="2" rules="all" cellpadding="4"> * <thead> * <tr> * <th align="center" colspan="2"><code> * getPrefixes(namespaceURI)</code> return value for * specified Namespace URIs</th> * </tr> * <tr> * <th>Namespace URI parameter</th> * <th>prefixes value returned</th> * </tr> * </thead> * <tbody> * <tr> * <td>bound Namespace URI, * including the <default Namespace URI></td> * <td> * <code>Iterator</code> over prefixes bound to Namespace URI in * the current scope in an arbitrary, * <strong>implementation dependent</strong>, * order * </td> * </tr> * <tr> * <td>unbound Namespace URI</td> * <td>empty <code>Iterator</code></td> * </tr> * <tr> * <td><code>XMLConstants.XML_NS_URI</code> * ("http://www.w3.org/XML/1998/namespace")</td> * <td><code>Iterator</code> with one element set to * <code>XMLConstants.XML_NS_PREFIX</code> ("xml")</td> * </tr> * <tr> * <td><code>XMLConstants.XMLNS_ATTRIBUTE_NS_URI</code> * ("http://www.w3.org/2000/xmlns/")</td> * <td><code>Iterator</code> with one element set to * <code>XMLConstants.XMLNS_ATTRIBUTE</code> ("xmlns")</td> * </tr> * <tr> * <td><code>null</code></td> * <td><code>IllegalArgumentException</code> is thrown</td> * </tr> * </tbody> * </table> * * @param namespaceURI URI of Namespace to lookup * * @return <code>Iterator</code> for all prefixes bound to the * Namespace URI in the current scope * * @throws IllegalArgumentException When <code>namespaceURI</code> is * <code>null</code> */ Iterator getPrefixes(String namespaceURI); }