Sophie

Sophie

distrib > Mageia > 7 > aarch64 > by-pkgid > b3bdfe6d859a3d6920ff2c44b38e9a6f > files > 2626

saxon-manual-9.4.0.9-2.mga7.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_18) on Fri Dec 09 20:48:37 GMT 2011 -->
<TITLE>
KeyManager
</TITLE>

<META NAME="date" CONTENT="2011-12-09">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="KeyManager";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../net/sf/saxon/trans/KeyDefinitionSet.html" title="class in net.sf.saxon.trans"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../net/sf/saxon/trans/LicenseException.html" title="class in net.sf.saxon.trans"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?net/sf/saxon/trans/KeyManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="KeyManager.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
net.sf.saxon.trans</FONT>
<BR>
Class KeyManager</H2>
<PRE>
<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>net.sf.saxon.trans.KeyManager</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>KeyManager</B><DT>extends <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</A></DL>
</PRE>

<P>
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.

 <p>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.</p>

 <p>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.</p>

 <p>For XSLT-defined keys, equality matching follows the rules of the eq operator, which means
 that untypedAtomic values are treated as strings. In backwards compatibility mode, <i>all</i>
 values are converted to strings.</p>

 <p>This class is also used for internal indexes constructed (a) to support the idref() function,
 and (b) (in Saxon-EE only) to support filter expressions of the form /a/b/c[d=e], where the
 path expression being filtered must be a single-document context-free path rooted at a document node,
 where exactly one of d and e must be dependent on the focus, and where certain other conditions apply
 such as the filter predicate not being positional. The operator in this case may be either "=" or "eq".
 If it is "eq", then the semantics are very similar to xsl:key indexes, except that use of non-comparable
 types gives an error rather than a non-match. If the operator is "=", however, then the rules for
 handling untypedAtomic values are different: these must be converted to the type of the other operand.
 In this situation the following rules apply. Assume that the predicate is [use=value], where use is
 dependent on the focus (the indexed value), and value is the sought value.</p>

 <ul>
 <li>If value is a type other than untypedAtomic, say T, then we build an index for type T, in which any
 untypedAtomic values that arise in evaluating "use" are converted to type T. A conversion failure results
 in an error. A value of a type that is not comparable to T also results in an error.</li>
 <li>If value is untypedAtomic, then we build an index for every type actually encountered in evaluating
 the use expression (treating untypedAtomic as string), and then search each of these indexes. (Note that
 it is not an error if the use expression returns a mixture of say numbers and dates, provided that the
 sought value is untypedAtomic).</li>
 </ul>
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Michael H. Kay</DD>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#net.sf.saxon.trans.KeyManager">Serialized Form</A></DL>
<HR>

<P>

<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#KeyManager(net.sf.saxon.Configuration)">KeyManager</A></B>(<A HREF="../../../../net/sf/saxon/Configuration.html" title="class in net.sf.saxon">Configuration</A>&nbsp;config)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a KeyManager and initialise variables</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#addKeyDefinition(net.sf.saxon.om.StructuredQName, net.sf.saxon.trans.KeyDefinition, net.sf.saxon.Configuration)">addKeyDefinition</A></B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;keyName,
                 <A HREF="../../../../net/sf/saxon/trans/KeyDefinition.html" title="class in net.sf.saxon.trans">KeyDefinition</A>&nbsp;keydef,
                 <A HREF="../../../../net/sf/saxon/Configuration.html" title="class in net.sf.saxon">Configuration</A>&nbsp;config)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Register a key definition.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#clearDocumentIndexes(net.sf.saxon.om.DocumentInfo)">clearDocumentIndexes</A></B>(<A HREF="../../../../net/sf/saxon/om/DocumentInfo.html" title="interface in net.sf.saxon.om">DocumentInfo</A>&nbsp;doc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clear all the indexes for a given document.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#explainKeys(net.sf.saxon.trace.ExpressionPresenter)">explainKeys</A></B>(<A HREF="../../../../net/sf/saxon/trace/ExpressionPresenter.html" title="class in net.sf.saxon.trace">ExpressionPresenter</A>&nbsp;out)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Diagnostic output explaining the keys</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/trans/KeyDefinitionSet.html" title="class in net.sf.saxon.trans">KeyDefinitionSet</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#getKeyDefinitionSet(net.sf.saxon.om.StructuredQName)">getKeyDefinitionSet</A></B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get all the key definitions that match a particular name</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#getNumberOfKeyDefinitions()">getNumberOfKeyDefinitions</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the number of distinctly-named key definitions</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#preRegisterKeyDefinition(net.sf.saxon.om.StructuredQName)">preRegisterKeyDefinition</A></B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;keyName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pre-register a key definition.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&lt;<A HREF="../../../../net/sf/saxon/om/NodeInfo.html" title="interface in net.sf.saxon.om">NodeInfo</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#selectByKey(net.sf.saxon.trans.KeyDefinitionSet, net.sf.saxon.om.DocumentInfo, net.sf.saxon.value.AtomicValue, net.sf.saxon.expr.XPathContext)">selectByKey</A></B>(<A HREF="../../../../net/sf/saxon/trans/KeyDefinitionSet.html" title="class in net.sf.saxon.trans">KeyDefinitionSet</A>&nbsp;keySet,
            <A HREF="../../../../net/sf/saxon/om/DocumentInfo.html" title="interface in net.sf.saxon.om">DocumentInfo</A>&nbsp;doc,
            <A HREF="../../../../net/sf/saxon/value/AtomicValue.html" title="class in net.sf.saxon.value">AtomicValue</A>&nbsp;soughtValue,
            <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the nodes with a given key value</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../net/sf/saxon/trans/KeyManager.html#selectByKey(net.sf.saxon.om.StructuredQName, net.sf.saxon.om.DocumentInfo, net.sf.saxon.value.AtomicValue, net.sf.saxon.expr.XPathContext)">selectByKey</A></B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;keyName,
            <A HREF="../../../../net/sf/saxon/om/DocumentInfo.html" title="interface in net.sf.saxon.om">DocumentInfo</A>&nbsp;doc,
            <A HREF="../../../../net/sf/saxon/value/AtomicValue.html" title="class in net.sf.saxon.value">AtomicValue</A>&nbsp;soughtValue,
            <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the nodes with a given key value.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="KeyManager(net.sf.saxon.Configuration)"><!-- --></A><H3>
KeyManager</H3>
<PRE>
public <B>KeyManager</B>(<A HREF="../../../../net/sf/saxon/Configuration.html" title="class in net.sf.saxon">Configuration</A>&nbsp;config)</PRE>
<DL>
<DD>Create a KeyManager and initialise variables
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>config</CODE> - the Saxon configuration</DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="preRegisterKeyDefinition(net.sf.saxon.om.StructuredQName)"><!-- --></A><H3>
preRegisterKeyDefinition</H3>
<PRE>
public void <B>preRegisterKeyDefinition</B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;keyName)</PRE>
<DL>
<DD>Pre-register a key definition. This simply registers that a key with a given name exists,
 without providing any details.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>keyName</CODE> - the name of the key to be pre-registered</DL>
</DD>
</DL>
<HR>

<A NAME="addKeyDefinition(net.sf.saxon.om.StructuredQName, net.sf.saxon.trans.KeyDefinition, net.sf.saxon.Configuration)"><!-- --></A><H3>
addKeyDefinition</H3>
<PRE>
public void <B>addKeyDefinition</B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;keyName,
                             <A HREF="../../../../net/sf/saxon/trans/KeyDefinition.html" title="class in net.sf.saxon.trans">KeyDefinition</A>&nbsp;keydef,
                             <A HREF="../../../../net/sf/saxon/Configuration.html" title="class in net.sf.saxon">Configuration</A>&nbsp;config)
                      throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Register a key definition. Note that multiple key definitions with the same name are
 allowed
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>keyName</CODE> - Structured QName representing the name of the key<DD><CODE>keydef</CODE> - The details of the key's definition<DD><CODE>config</CODE> - The configuration
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE> - if this key definition is inconsistent with existing key definitions having the same name</DL>
</DD>
</DL>
<HR>

<A NAME="getKeyDefinitionSet(net.sf.saxon.om.StructuredQName)"><!-- --></A><H3>
getKeyDefinitionSet</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/trans/KeyDefinitionSet.html" title="class in net.sf.saxon.trans">KeyDefinitionSet</A> <B>getKeyDefinitionSet</B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;qName)</PRE>
<DL>
<DD>Get all the key definitions that match a particular name
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qName</CODE> - The name of the required key
<DT><B>Returns:</B><DD>The set of key definitions of the named key if there are any, or null otherwise.</DL>
</DD>
</DL>
<HR>

<A NAME="selectByKey(net.sf.saxon.om.StructuredQName, net.sf.saxon.om.DocumentInfo, net.sf.saxon.value.AtomicValue, net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
selectByKey</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A> <B>selectByKey</B>(<A HREF="../../../../net/sf/saxon/om/StructuredQName.html" title="class in net.sf.saxon.om">StructuredQName</A>&nbsp;keyName,
                                    <A HREF="../../../../net/sf/saxon/om/DocumentInfo.html" title="interface in net.sf.saxon.om">DocumentInfo</A>&nbsp;doc,
                                    <A HREF="../../../../net/sf/saxon/value/AtomicValue.html" title="class in net.sf.saxon.value">AtomicValue</A>&nbsp;soughtValue,
                                    <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                             throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Get the nodes with a given key value. This method is called from XQuery compiled code
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>keyName</CODE> - key name used in the call to the key() function<DD><CODE>doc</CODE> - The source document in question<DD><CODE>soughtValue</CODE> - The required key value<DD><CODE>context</CODE> - The dynamic context, needed only the first time when the key is being built
<DT><B>Returns:</B><DD>an iteration of the selected nodes, always in document order with no duplicates
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="selectByKey(net.sf.saxon.trans.KeyDefinitionSet, net.sf.saxon.om.DocumentInfo, net.sf.saxon.value.AtomicValue, net.sf.saxon.expr.XPathContext)"><!-- --></A><H3>
selectByKey</H3>
<PRE>
public <A HREF="../../../../net/sf/saxon/om/SequenceIterator.html" title="interface in net.sf.saxon.om">SequenceIterator</A>&lt;<A HREF="../../../../net/sf/saxon/om/NodeInfo.html" title="interface in net.sf.saxon.om">NodeInfo</A>&gt; <B>selectByKey</B>(<A HREF="../../../../net/sf/saxon/trans/KeyDefinitionSet.html" title="class in net.sf.saxon.trans">KeyDefinitionSet</A>&nbsp;keySet,
                                              <A HREF="../../../../net/sf/saxon/om/DocumentInfo.html" title="interface in net.sf.saxon.om">DocumentInfo</A>&nbsp;doc,
                                              <A HREF="../../../../net/sf/saxon/value/AtomicValue.html" title="class in net.sf.saxon.value">AtomicValue</A>&nbsp;soughtValue,
                                              <A HREF="../../../../net/sf/saxon/expr/XPathContext.html" title="interface in net.sf.saxon.expr">XPathContext</A>&nbsp;context)
                                       throws <A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></PRE>
<DL>
<DD>Get the nodes with a given key value
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>keySet</CODE> - The set of key definitions identified by the key name used in the call to the key() function<DD><CODE>doc</CODE> - The source document in question<DD><CODE>soughtValue</CODE> - The required key value<DD><CODE>context</CODE> - The dynamic context, needed only the first time when the key is being built
<DT><B>Returns:</B><DD>an iteration of the selected nodes, always in document order with no duplicates
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../net/sf/saxon/trans/XPathException.html" title="class in net.sf.saxon.trans">XPathException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="clearDocumentIndexes(net.sf.saxon.om.DocumentInfo)"><!-- --></A><H3>
clearDocumentIndexes</H3>
<PRE>
public void <B>clearDocumentIndexes</B>(<A HREF="../../../../net/sf/saxon/om/DocumentInfo.html" title="interface in net.sf.saxon.om">DocumentInfo</A>&nbsp;doc)</PRE>
<DL>
<DD>Clear all the indexes for a given document. This is currently done whenever updates
 are applied to the document, because updates can potentially invalidate the indexes.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>doc</CODE> - the document whose indexes are to be invalidated</DL>
</DD>
</DL>
<HR>

<A NAME="getNumberOfKeyDefinitions()"><!-- --></A><H3>
getNumberOfKeyDefinitions</H3>
<PRE>
public int <B>getNumberOfKeyDefinitions</B>()</PRE>
<DL>
<DD>Get the number of distinctly-named key definitions
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the number of key definition sets (where the key definitions in one set share the same name)</DL>
</DD>
</DL>
<HR>

<A NAME="explainKeys(net.sf.saxon.trace.ExpressionPresenter)"><!-- --></A><H3>
explainKeys</H3>
<PRE>
public void <B>explainKeys</B>(<A HREF="../../../../net/sf/saxon/trace/ExpressionPresenter.html" title="class in net.sf.saxon.trace">ExpressionPresenter</A>&nbsp;out)</PRE>
<DL>
<DD>Diagnostic output explaining the keys
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>out</CODE> - the expression presenter that will display the information</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../net/sf/saxon/trans/KeyDefinitionSet.html" title="class in net.sf.saxon.trans"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../net/sf/saxon/trans/LicenseException.html" title="class in net.sf.saxon.trans"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?net/sf/saxon/trans/KeyManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="KeyManager.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.
</BODY>
</HTML>