Package com.icl.saxon.om
Class NamePool
- java.lang.Object
-
- com.icl.saxon.om.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 thereint
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 thereshort
allocateCodeForPrefix(java.lang.String prefix)
Allocate the prefix code for a given Prefix; create one if not foundshort
allocateCodeForURI(java.lang.String uri)
Allocate the uri code for a given URI; create one if not found, unless the namepool is sealedint
allocateNamespaceCode(int namecode)
Allocate a namespace code for the prefix/URI of a given namecodeint
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 contentsvoid
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 Prefixshort
getCodeForURI(java.lang.String uri)
Get the uri code for a given URIstatic NamePool
getDefaultNamePool()
Get the singular default NamePooljava.lang.String
getDisplayName(int nameCode)
Get the display form of a name (the QName), given its name code or fingerprintint
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 fingerprintint
getNamespaceCode(int namecode)
Get a namespace code for the prefix/URI of a given namecodeint
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 fingerprintjava.lang.String
getPrefixFromNamespaceCode(int code)
Get the namespace prefix from a namespace codeint
getPrefixIndex(short uriCode, java.lang.String prefix)
Get the index of a prefix among all the prefixes used with a given URIjava.lang.String
getPrefixWithIndex(short uriCode, int index)
Get a prefix among all the prefixes used with a given URI, given its indexStandardNames
getStandardNames()
Get the standard namesjava.lang.String
getURI(int nameCode)
Get the namespace-URI of a name, given its name code or fingerprintshort
getURICode(int nameCode)
Get the URI code of a name, given its name code or fingerprintjava.lang.String
getURIFromNamespaceCode(int code)
Get the namespace URI from a namespace codejava.lang.String
getURIFromURICode(short code)
Get the namespace URI from a URI codeboolean
hasSignature(java.lang.Object sig)
Test whether the namepool contains names defined in a particular Stylesheetvoid
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 sealedvoid
loadStandardNames()
Load the standard names that have a special meaning to XSLTvoid
setStylesheetSignature(java.lang.Object sig)
Mark the NamePool to indicate that it contains names defined in a particular stylesheet
-
-
-
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
-
-
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 URIlocalName
-- 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 URIlocalName
-- 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.
-
-