| java.lang.Object net.sf.saxon.trans.KeyManager
KeyManager | public class KeyManager implements Serializable(Code) | | KeyManager manages the set of key definitions in a stylesheet, and the indexes
associated with these key definitions. It handles xsl:sort-key as well as xsl:key
definitions.
The memory management in this class is subtle, with extensive use of weak references.
The idea is that an index should continue to exist in memory so long as both the compiled
stylesheet and the source document exist in memory: if either is removed, the index should
go too. The document itself holds no reference to the index. The compiled stylesheet (which
owns the KeyManager) holds a weak reference to the index. The index, of course, holds strong
references to the nodes in the document. The Controller holds a strong reference to the
list of indexes used for each document, so that indexes remain in memory for the duration
of a transformation even if the documents themselves are garbage collected.
Potentially there is a need for more than one index for a given key name, depending
on the primitive type of the value provided to the key() function. An index is built
corresponding to the type of the requested value; if subsequently the key() function is
called with the same name and a different type of value, then a new index is built.
author: Michael H. Kay |
KeyManager | public KeyManager(Configuration config)(Code) | | create a KeyManager and initialise variables
|
addKeyDefinition | public void addKeyDefinition(int fingerprint, KeyDefinition keydef, NamePool namePool) throws TransformerConfigurationException(Code) | | Register a key definition. Note that multiple key definitions with the same name are
allowed
Parameters: fingerprint - Integer representing the name of the key Parameters: keydef - The details of the key's definition Parameters: namePool - |
getKeyDefinitions | public List getKeyDefinitions(int fingerprint)(Code) | | Get all the key definitions that match a particular fingerprint
Parameters: fingerprint - The fingerprint of the name of the required key The key definition of the named key if there is one, or null otherwise. |
selectByKey | public SequenceIterator selectByKey(int fingerprint, DocumentInfo doc, AtomicValue value, XPathContext context) throws XPathException(Code) | | Get the nodes with a given key value
Parameters: fingerprint - The fingerprint of the name of the required key Parameters: doc - The source document in question Parameters: value - The required key value Parameters: context - The dynamic context, needed only the first time when the key is being built an enumeration of nodes, always in document order |
|
|