## net.sf.saxon.om
Class NamePool

    java.lang.Object
      |
      +--net.sf.saxon.om.NamePool

All Implemented Interfaces:
  java.io.Serializable

public class NamePool
extends java.lang.Object
implements java.io.Serializable

An object representing a collection of XML names, each containing a Namespace URI, a Namespace prefix, and a local name; plus a collection of namespaces, each consisting of a prefix/URI pair.

The equivalence betweem names depends only on the URI and the local name. The prefix is retained for documentary purposes only: it is useful when reconstructing a document to use prefixes that the user is familiar with.

The NamePool eliminates duplicate names if they have the same prefix, uri, and local part. It retains duplicates if they have different prefixes

See Also:
  Serialized Form

Nested Class Summary
`static class` `NamePool.NamePoolLimitException`

Constructor Summary
`NamePool()`

Method Summary
`int` `allocate(int fingerprint, java.lang.String prefix)` Allocate a nameCode, given a fingerprint and a prefix
`int` `allocate(java.lang.String prefix, short uriCode, java.lang.String localName)` Allocate a name from the pool, or a new Name if there is not a matching one there
`int` `allocate(java.lang.String prefix, java.lang.String uri, java.lang.String localName)` Allocate a name from the pool, or a new Name if there is not a matching one there
`int` `allocateClarkName(java.lang.String expandedName)` Allocate a fingerprint given a Clark Name
`short` `allocateCodeForPrefix(java.lang.String prefix)` Allocate the prefix code for a given Prefix; create one if not found
`short` `allocateCodeForURI(java.lang.String uri)` Allocate the uri code for a given URI; create one if not found
`int` `allocateDocumentNumber(DocumentInfo doc)` Add a document to the pool, and allocate a document number
`int` `allocateNamespaceCode(int namecode)` Allocate a namespace code for the prefix/URI of a given namecode
`int` `allocateNamespaceCode(java.lang.String prefix, java.lang.String uri)` Allocate the namespace code for a namespace prefix/URI pair.
`void` `diagnosticDump()` Diagnostic print of the namepool contents.
`java.lang.String` `getClarkName(int nameCode)` Get the Clark form of a name, given its name code or fingerprint
`short` `getCodeForPrefix(java.lang.String prefix)` Get the prefix code for a given Prefix
`short` `getCodeForURI(java.lang.String uri)` Get the uri code for a given URI
`static NamePool` `getDefaultNamePool()` Get the singular default NamePool
`java.lang.String` `getDisplayName(int nameCode)` Get the display form of a name (the QName), given its name code or fingerprint
`int` `getFingerprint(java.lang.String uri, java.lang.String localName)` Get a fingerprint for the name with a given uri and local name.
`int` `getFingerprintForExpandedName(java.lang.String expandedName)` Get fingerprint for expanded name in {uri}local format
`java.lang.String` `getLocalName(int nameCode)` Get the local part of a name, given its name code or fingerprint
`int` `getNamespaceCode(java.lang.String prefix, java.lang.String uri)` Get the existing namespace code for a namespace prefix/URI pair.
`java.lang.String` `getPrefix(int nameCode)` Get the prefix part of a name, given its name code or fingerprint
`java.lang.String` `getPrefixFromNamespaceCode(int code)` Get the namespace prefix from a namespace code.
`java.lang.String` `getPrefixWithIndex(short uriCode, int index)` Get a prefix among all the prefixes used with a given URI, given its index
`java.lang.String` `getURI(int nameCode)` Get the namespace-URI of a name, given its name code or fingerprint
`short` `getURICode(int nameCode)` Get the URI code of a name, given its name code or fingerprint
`java.lang.String` `getURIFromNamespaceCode(int code)` Get the namespace URI from a namespace code.
`java.lang.String` `getURIFromURICode(short code)` Get the namespace URI from a URI code.
`static void` `setDefaultNamePool(NamePool pool)` Set the default NamePool (used after loading a compiled stylesheet)
`java.lang.String` `suggestPrefixForURI(java.lang.String URI)` Suggest a prefix for a given URI.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### NamePool

    public NamePool()

Method Detail

### getDefaultNamePool

    public static NamePool getDefaultNamePool()

  Get the singular default NamePool

### setDefaultNamePool

    public static void setDefaultNamePool(NamePool pool)

  Set the default NamePool (used after loading a compiled stylesheet)

### allocateDocumentNumber

    public int allocateDocumentNumber(DocumentInfo doc)

  Add a document to the pool, and allocate a document number

  Parameters:
    `doc` - The DocumentInfo for the document in question
  Returns:
    the document number, unique within this document pool

### allocateNamespaceCode

    public int allocateNamespaceCode(java.lang.String prefix,
                                     java.lang.String uri)

  Allocate the namespace code for a namespace prefix/URI pair. Create it if not already present

  Parameters:
    `prefix` - the namespace prefix
    `uri` - the namespace URI
  Returns:
    an integer code identifying the namespace. The namespace code identifies both the prefix and the URI.

### getNamespaceCode

    public int getNamespaceCode(java.lang.String prefix,
                                java.lang.String uri)

  Get the existing namespace code for a namespace prefix/URI pair.

  Returns:
    -1 if there is none present

### allocateCodeForURI

    public short allocateCodeForURI(java.lang.String uri)

  Allocate the uri code for a given URI; create one if not found

### getCodeForURI

    public short getCodeForURI(java.lang.String uri)

  Get the uri code for a given URI

  Returns:
    -1 if not present in the name pool

### allocateCodeForPrefix

    public short allocateCodeForPrefix(java.lang.String prefix)

  Allocate the prefix code for a given Prefix; create one if not found

  Parameters:
    `prefix` - the namespace prefix whose code is to be allocated or returned
  Returns:
    the numeric code for this prefix

### getCodeForPrefix

    public short getCodeForPrefix(java.lang.String prefix)

  Get the prefix code for a given Prefix

  Returns:
    -1 if not found

### suggestPrefixForURI

    public java.lang.String suggestPrefixForURI(java.lang.String URI)

  Suggest a prefix for a given URI. If there are several, it's undefined which one is returned. If there are no prefixes registered for this URI, return null.

### getPrefixWithIndex

    public java.lang.String getPrefixWithIndex(short uriCode,
                                               int index)

  Get a prefix among all the prefixes used with a given URI, given its index

  Returns:
    null if not found

### allocate

    public int allocate(java.lang.String prefix,
                        java.lang.String uri,
                        java.lang.String localName)

  Allocate a name from the pool, or a new Name if there is not a matching one there

  Parameters:
    `prefix` -
    `uri` - - the namespace URI. The null URI is represented as an empty string.
    `localName` -
  Returns:
    an integer (the "namecode") identifying the name within the namepool. The Name itself may be retrieved using the getName(int) method

### allocate

    public int allocate(java.lang.String prefix,
                        short uriCode,
                        java.lang.String localName)

  Allocate a name from the pool, or a new Name if there is not a matching one there

  Parameters:
    `prefix` - - the namespace prefix
    `uriCode` - - the code of the URI
    `localName` - - the local part of the QName
  Returns:
    an integer (the "namecode") identifying the name within the namepool.

### allocate

    public int allocate(int fingerprint,
                        java.lang.String prefix)

  Allocate a nameCode, given a fingerprint and a prefix

  Parameters:
    `fingerprint` - - the fingerprint of a name already in the name pool
    `prefix` - - the namespace prefix
  Returns:
    an integer (the "namecode") identifying the name within the namepool.

### allocateNamespaceCode

    public int allocateNamespaceCode(int namecode)

  Allocate a namespace code for the prefix/URI of a given namecode

  Parameters:
    `namecode` - a code identifying an expanded QName, e.g. of an element or attribute
  Returns:
    a code identifying the namespace used in the given name. The namespace code identifies both the prefix and the URI.

### getURI

    public java.lang.String getURI(int nameCode)

  Get the namespace-URI of a name, given its name code or fingerprint

### getURICode

    public short getURICode(int nameCode)

  Get the URI code of a name, given its name code or fingerprint

### getLocalName

    public java.lang.String getLocalName(int nameCode)

  Get the local part of a name, given its name code or fingerprint

### getPrefix

    public java.lang.String getPrefix(int nameCode)

  Get the prefix part of a name, given its name code or fingerprint

### getDisplayName

    public java.lang.String getDisplayName(int nameCode)

  Get the display form of a name (the QName), given its name code or fingerprint

### getClarkName

    public java.lang.String getClarkName(int nameCode)

  Get the Clark form of a name, given its name code or fingerprint

  Returns:
    the local name if the name is in the null namespace, or "{uri}local" otherwise. The name is always interned.

### allocateClarkName

    public int allocateClarkName(java.lang.String expandedName)

  Allocate a fingerprint given a Clark Name

### getFingerprint

    public int getFingerprint(java.lang.String uri,
                              java.lang.String localName)

  Get a fingerprint for the name with a given uri and local name. These must be present in the NamePool. The fingerprint has the property that if two fingerprint are the same, the names are the same (ie. same local name and same URI).

  Returns:
    -1 if not found

### getURIFromNamespaceCode

    public java.lang.String getURIFromNamespaceCode(int code)

  Get the namespace URI from a namespace code.

### getURIFromURICode

    public java.lang.String getURIFromURICode(short code)

  Get the namespace URI from a URI code.

### getPrefixFromNamespaceCode

    public java.lang.String getPrefixFromNamespaceCode(int code)

  Get the namespace prefix from a namespace code.

### getFingerprintForExpandedName

    public int getFingerprintForExpandedName(java.lang.String expandedName)

  Get fingerprint for expanded name in {uri}local format

### diagnosticDump

    public void diagnosticDump()

  Diagnostic print of the namepool contents.