public class NamespaceSupport extends Object
This module, both source code and documentation, is in the Public Domain, and comes with NO WARRANTY. See http://www.saxproject.org for further information.
This class encapsulates the logic of Namespace processing: it tracks the declarations currently in force for each context and automatically processes qualified XML names into their Namespace parts; it can also be used in reverse for generating XML qnames from Namespaces.
Namespace support objects are reusable, but the reset method must be invoked between each session.
Here is a simple session:
String parts[] = new String[3]; NamespaceSupport support = new NamespaceSupport(); support.pushContext(); support.declarePrefix("", "http://www.w3.org/1999/xhtml"); support.declarePrefix("dc", "http://www.purl.org/dc#"); parts = support.processName("p", parts, false); System.out.println("Namespace URI: " + parts[0]); System.out.println("Local name: " + parts[1]); System.out.println("Raw name: " + parts[2]); parts = support.processName("dc:title", parts, false); System.out.println("Namespace URI: " + parts[0]); System.out.println("Local name: " + parts[1]); System.out.println("Raw name: " + parts[2]); support.popContext();
Note that this class is optimized for the use case where most elements do not contain Namespace declarations: if the same prefix/URI mapping is repeated for each context (for example), this class will be somewhat less efficient.
Although SAX drivers (parsers) may choose to use this class to implement namespace handling, they are not required to do so. Applications must track namespace information themselves if they want to use namespace information.
Modifier and Type | Field and Description |
---|---|
static String |
NSDECL
The namespace declaration URI as a constant.
|
static String |
XMLNS
The XML Namespace URI as a constant.
|
Constructor and Description |
---|
NamespaceSupport()
Create a new Namespace support object.
|
Modifier and Type | Method and Description |
---|---|
boolean |
declarePrefix(String prefix,
String uri)
Declare a Namespace prefix.
|
Enumeration |
getDeclaredPrefixes()
Return an enumeration of all prefixes declared in this context.
|
String |
getPrefix(String uri)
Return one of the prefixes mapped to a Namespace URI.
|
Enumeration |
getPrefixes()
Return an enumeration of all prefixes whose declarations are
active in the current context.
|
Enumeration |
getPrefixes(String uri)
Return an enumeration of all prefixes for a given URI whose
declarations are active in the current context.
|
String |
getURI(String prefix)
Look up a prefix and get the currently-mapped Namespace URI.
|
boolean |
isNamespaceDeclUris()
Returns true if namespace declaration attributes are placed into
a namespace.
|
void |
popContext()
Revert to the previous Namespace context.
|
String[] |
processName(String qName,
String[] parts,
boolean isAttribute)
Process a raw XML qualified name, after all declarations in the
current context have been handled by
declarePrefix() . |
void |
pushContext()
Start a new Namespace context.
|
void |
reset()
Reset this Namespace support object for reuse.
|
void |
setNamespaceDeclUris(boolean value)
Controls whether namespace declaration attributes are placed
into the
NSDECL namespace
by processName() . |
public static final String XMLNS
http://www.w3.org/XML/1998/namespace
as defined in the "Namespaces in XML" * recommendation.
This is the Namespace URI that is automatically mapped to the "xml" prefix.
public static final String NSDECL
http://www.w3.org/xmlns/2000/
, as defined
in a backwards-incompatible erratum to the "Namespaces in XML"
recommendation. Because that erratum postdated SAX2, SAX2 defaults
to the original recommendation, and does not normally use this URI.
This is the Namespace URI that is optionally applied to xmlns and xmlns:* attributes, which are used to declare namespaces.
setNamespaceDeclUris(boolean)
,
isNamespaceDeclUris()
,
Constant Field Values