Class NamePool


  • public class NamePool
    extends java.lang.Object
    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

    Author:
    Michael H. Kay
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) com.icl.saxon.om.NamePool.NameEntry[] hashslots  
      (package private) java.lang.String[] prefixes  
      (package private) java.lang.String[] prefixesForUri  
      (package private) short prefixesUsed  
      (package private) boolean sealed  
      (package private) java.util.Vector signatures  
      (package private) java.lang.String[] uris  
      (package private) short urisUsed  
    • Constructor Summary

      Constructors 
      Constructor Description
      NamePool()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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
      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, unless the namepool is sealed
      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
      void generateJavaConstants()
      The following code is used to create a list of Java declarations for the fingerprints of standard names used in a stylesheet.
      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​(int nameCode)
      Get a fingerprint for the name with a given name code.
      int getFingerprint​(java.lang.String uri, java.lang.String localName)
      Get a fingerprint for the name with a given uri and local name.
      java.lang.String getLocalName​(int nameCode)
      Get the local part of a name, given its name code or fingerprint
      int getNamespaceCode​(int namecode)
      Get a namespace code for the prefix/URI of a given namecode
      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
      int getPrefixIndex​(short uriCode, java.lang.String prefix)
      Get the index of a prefix among all the prefixes used with a given URI
      java.lang.String getPrefixWithIndex​(short uriCode, int index)
      Get a prefix among all the prefixes used with a given URI, given its index
      StandardNames getStandardNames()
      Get the standard names
      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
      boolean hasSignature​(java.lang.Object sig)
      Test whether the namepool contains names defined in a particular Stylesheet
      void importPool​(NamePool other)
      Import the names defined in another namepool (typically the one used to create the stylesheet: these names are imported into the namepool used to build the source document).
      boolean isSealed()
      Determine whether the namepool is sealed
      void loadStandardNames()
      Load the standard names that have a special meaning to XSLT
      void setStylesheetSignature​(java.lang.Object sig)
      Mark the NamePool to indicate that it contains names defined in a particular stylesheet
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • hashslots

        com.icl.saxon.om.NamePool.NameEntry[] hashslots
      • prefixes

        java.lang.String[] prefixes
      • prefixesUsed

        short prefixesUsed
      • uris

        java.lang.String[] uris
      • prefixesForUri

        java.lang.String[] prefixesForUri
      • urisUsed

        short urisUsed
      • signatures

        java.util.Vector signatures
      • sealed

        boolean sealed
    • Constructor Detail

      • NamePool

        public NamePool()
    • Method Detail

      • getDefaultNamePool

        public static NamePool getDefaultNamePool()
        Get the singular default NamePool
      • loadStandardNames

        public void loadStandardNames()
        Load the standard names that have a special meaning to XSLT
      • getStandardNames

        public StandardNames getStandardNames()
        Get the standard names
      • setStylesheetSignature

        public void setStylesheetSignature​(java.lang.Object sig)
        Mark the NamePool to indicate that it contains names defined in a particular stylesheet
      • hasSignature

        public boolean hasSignature​(java.lang.Object sig)
        Test whether the namepool contains names defined in a particular Stylesheet
      • importPool

        public void importPool​(NamePool other)
                        throws javax.xml.transform.TransformerException
        Import the names defined in another namepool (typically the one used to create the stylesheet: these names are imported into the namepool used to build the source document). No longer used unless name pools are managed manually
        Throws:
        javax.xml.transform.TransformerException
      • isSealed

        public boolean isSealed()
        Determine whether the namepool is sealed
      • 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
      • 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, unless the namepool is sealed
      • 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
      • getCodeForPrefix

        public short getCodeForPrefix​(java.lang.String prefix)
        Get the prefix code for a given Prefix
        Returns:
        -1 if not found
      • getPrefixIndex

        public int getPrefixIndex​(short uriCode,
                                  java.lang.String prefix)
        Get the index of a prefix among all the prefixes used with a given URI
        Returns:
        -1 if not found
      • 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
        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 -
        uriCode - - the code of the URI
        localName -
        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
      • getNamespaceCode

        public int getNamespaceCode​(int namecode)
        Get a namespace code for the prefix/URI of a given namecode
      • 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
      • getFingerprint

        public int getFingerprint​(int nameCode)
        Get a fingerprint for the name with a given name code. The signature has the property that if two signatures are the same, the names are the same (ie. same local name and same URI)
      • 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 signature has the property that if two signatures 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
      • diagnosticDump

        public void diagnosticDump()
        Diagnostic print of the namepool contents
      • generateJavaConstants

        public void generateJavaConstants()
        The following code is used to create a list of Java declarations for the fingerprints of standard names used in a stylesheet. This code is executed while building Saxon, to create the constant definitions appearing in the StandardNames module.