Sophie

Sophie

distrib > Mandriva > 2010.0 > x86_64 > media > main-release > by-pkgid > 71fef6b9bbd764d1491dbe60964943fb > files > 218

lib64sablotron-devel-1.0.3-7mdv2010.0.x86_64.rpm

<html><head><link rel=StyleSheet href='api-content.css' TYPE='text/css' MEDIA='screen'><title>SXP</title></head>
<script>
function navToEntry(entry) {
  window.location.hash=entry;
}
function navToGroup(group) {
  var f = parent.frames['toc-container'];
  if (!f)
    window.open ('complete-toc.html#' + group, 'toc_container');
  else {
    if (f.location.href.search('abc') != -1)
        f.location.href = 'complete-toc.html#' + group;
    else
        f.location.hash = group;
  }
}
</script>
<body bgcolor='white'>
<!--
  -- HEADS UP!  This page was *GENERATED* by APIDOC,
  -- DO NOT EDIT THIS FILE BY HAND!
  -- See http://www.mozilla.org/projects/apidoc for information on APIDOC
  -- The original source file was sxp.xml
  -->
<h1 class='title'>SXP Reference</h1>
<a name='.Building'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>Building</font></td>
<td class='entry-type' align='center' width='25%'>General</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
All declarations described in this document, if
not specified otherwise, are to be found in the Sablotron header
file <code>sxpath.h</code>. When building an executable using the SXP,
include <code>sxpath.h</code> and link the Sablotron library (<code>-lsablot</code>).
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_General")'>General</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='.Errors'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>Errors</font></td>
<td class='entry-type' align='center' width='25%'>General</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
On error, most SXP interface functions output a Sablotron error
message and return an error code which can be passed to functions
like <code>SablotGetErrorMsg</code> (declared in <code>sablot.h</code>). 

<P>In the callbacks, in contrast, error handling has been kept to
a minimum. Typically, in case of an error, a callback just returns
a special value such as NULL.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_General")'>General</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='.Introduction'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>Introduction</font></td>
<td class='entry-type' align='center' width='25%'>General</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
The <b>Sablotron XPath processor</b> (SXP) enables the user to evaluate
an XPath query on a DOM document accessed via callback functions
provided by the user. The interface to SXP is written in C. SXP
is a part of Sablotron, an XSLT processor by Ginger Alliance.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_General")'>General</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("%2eBuilding");'>.Building</a> | <a href='javascript:navToEntry("%2eErrors");'>.Errors</a> | <a href='javascript:navToEntry("%2eUsage");'>.Usage</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='.Usage'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>Usage</font></td>
<td class='entry-type' align='center' width='25%'>General</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
To work with SXP, the user needs to instantiate a
<code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code>, register a DOM handler (a set of DOM-like
callback functions) using <code><a href='javascript:navToEntry("SXP_registerDOMHandler");'>SXP_registerDOMHandler</a></code>, and create a
query context using <code><a href='javascript:navToEntry("SXP_createQueryContext");'>SXP_createQueryContext</a></code>.
</td></tr>
<tr><td class='entry-example'>
<h4 class='entry-subhead'>Example</h4>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SablotSituation S;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_QueryContext Q;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOMHandler my_domhandler=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&getNodeType,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* ... more callbacks follow ... */
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* let us say the root is 123 */
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_Node root = (SXP_Node) 123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_char *result;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SablotCreateSituation(&S);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_registerDOMHandler(S, &my_domhandler);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_createQueryContext(S, &Q);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* perform the query with the root as the context node */
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_query(Q, "//*", root, 1, 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getResultString(Q, &result);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(result);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_destroyQueryContext(Q);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SablotDestroySituation(S);
</pre></td></tr>
<tr><td class='entry-notes'>
<h4 class='entry-subhead'>Notes</h4>
For clarity, error checking has been omitted from the above
excerpt.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_General")'>General</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_createQueryContext");'>SXP_createQueryContext</a> | <a href='javascript:navToEntry("SXP_registerDOMHandler");'>SXP_registerDOMHandler</a> | <a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='DOMHandler'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>DOMHandler</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
A structure holding the addresses of all the callback functions
that reveal the DOM document to the SXP. It contains the following
callbacks (in the given order):

<ul>
<li> <code><a href='javascript:navToEntry("getNodeType");'>getNodeType</a></code>,
<li> <code><a href='javascript:navToEntry("getNodeName");'>getNodeName</a></code>,
<li> <code><a href='javascript:navToEntry("getNodeNameURI");'>getNodeNameURI</a></code>,
<li> <code><a href='javascript:navToEntry("getNodeNameLocal");'>getNodeNameLocal</a></code>,
<li> <code><a href='javascript:navToEntry("getNodeValue");'>getNodeValue</a></code>,
<li> <code><a href='javascript:navToEntry("getNextSibling");'>getNextSibling</a></code>,
<li> <code><a href='javascript:navToEntry("getPreviousSibling");'>getPreviousSibling</a></code>,
<li> <code><a href='javascript:navToEntry("getNextAttrNS");'>getNextAttrNS</a></code>,
<li> <code><a href='javascript:navToEntry("getPreviousAttrNS");'>getPreviousAttrNS</a></code>,
<li> <code><a href='javascript:navToEntry("getChildCount");'>getChildCount</a></code>,
<li> <code><a href='javascript:navToEntry("getAttributeCount");'>getAttributeCount</a></code>,
<li> <code><a href='javascript:navToEntry("getNamespaceCount");'>getNamespaceCount</a></code>,
<li> <code><a href='javascript:navToEntry("getChildNo");'>getChildNo</a></code>,
<li> <code><a href='javascript:navToEntry("getAttributeNo");'>getAttributeNo</a></code>,
<li> <code><a href='javascript:navToEntry("getNamespaceNo");'>getNamespaceNo</a></code>,
<li> <code><a href='javascript:navToEntry("getParent");'>getParent</a></code>,
<li> <code><a href='javascript:navToEntry("getOwnerDocument");'>getOwnerDocument</a></code>,
<li> <code><a href='javascript:navToEntry("compareNodes");'>compareNodes</a></code>,
<li> <code><a href='javascript:navToEntry("retrieveDocument");'>retrieveDocument</a></code>.
</ul>
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("compareNodes");'>compareNodes</a> | <a href='javascript:navToEntry("getAttributeCount");'>getAttributeCount</a> | <a href='javascript:navToEntry("getAttributeNo");'>getAttributeNo</a> | <a href='javascript:navToEntry("getChildCount");'>getChildCount</a> | <a href='javascript:navToEntry("getChildNo");'>getChildNo</a> | <a href='javascript:navToEntry("getNamespaceCount");'>getNamespaceCount</a> | <a href='javascript:navToEntry("getNamespaceNo");'>getNamespaceNo</a> | <a href='javascript:navToEntry("getNextAttrNS");'>getNextAttrNS</a> | <a href='javascript:navToEntry("getNextSibling");'>getNextSibling</a> | <a href='javascript:navToEntry("getNodeName");'>getNodeName</a> | <a href='javascript:navToEntry("getNodeNameLocal");'>getNodeNameLocal</a> | <a href='javascript:navToEntry("getNodeNameURI");'>getNodeNameURI</a> | <a href='javascript:navToEntry("getNodeType");'>getNodeType</a> | <a href='javascript:navToEntry("getNodeValue");'>getNodeValue</a> | <a href='javascript:navToEntry("getOwnerDocument");'>getOwnerDocument</a> | <a href='javascript:navToEntry("getParent");'>getParent</a> | <a href='javascript:navToEntry("getPreviousAttrNS");'>getPreviousAttrNS</a> | <a href='javascript:navToEntry("getPreviousSibling");'>getPreviousSibling</a> | <a href='javascript:navToEntry("retrieveDocument");'>retrieveDocument</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='QueryContext'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>QueryContext</font></td>
<td class='entry-type' align='center' width='25%'>Types</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
A type representing the context of a query, which can hold (1)
namespace declarations for the next call to <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code>, (2)
variable bindings for the same, (3) the result of a
<code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code>. An object of this type is created using
<code><a href='javascript:navToEntry("SXP_createQueryContext");'>SXP_createQueryContext</a></code> and freed using
<code><a href='javascript:navToEntry("SXP_destroyQueryContext");'>SXP_destroyQueryContext</a></code>. The evaluation result may be
retrieved using functions like <code><a href='javascript:navToEntry("SXP_getResultString");'>SXP_getResultString</a></code>. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Types")'>Types</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_addNamespaceDeclaration");'>SXP_addNamespaceDeclaration</a> | <a href='javascript:navToEntry("SXP_addVariableBinding");'>SXP_addVariableBinding</a> | <a href='javascript:navToEntry("SXP_addVariableString");'>SXP_addVariableString</a> | <a href='javascript:navToEntry("SXP_createQueryContext");'>SXP_createQueryContext</a> | <a href='javascript:navToEntry("SXP_destroyQueryContext");'>SXP_destroyQueryContext</a> | <a href='javascript:navToEntry("SXP_getResultString");'>SXP_getResultString</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_Document'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_Document</font></td>
<td class='entry-type' align='center' width='25%'>Types</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
A document type. <code>SXP_Document</code> can be used in place of any
<code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code>, in which case it represents the document root
node. A synonym for <code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code> is <code>NodeHandle</code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Types")'>Types</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_ExpressionType'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_ExpressionType</font></td>
<td class='entry-type' align='center' width='25%'>Enums</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
The type for expressions in the SXP. Possible values include
<code>SXP_NONE</code> (unknown type), <code>SXP_NUMBER</code>,
<code>SXP_STRING</code>, <code>SXP_BOOLEAN</code> and <code>SXP_NODESET</code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Enums")'>Enums</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_getResultType");'>SXP_getResultType</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_Node'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_Node</font></td>
<td class='entry-type' align='center' width='25%'>Types</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
A generic node type. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Types")'>Types</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_NodeList'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_NodeList</font></td>
<td class='entry-type' align='center' width='25%'>Types</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
A node list type. Node lists are returned by
<code><a href='javascript:navToEntry("SXP_getResultNodeset");'>SXP_getResultNodeset</a></code> and are manipulated using
<code><a href='javascript:navToEntry("SXP_getNodeListLength");'>SXP_getNodeListLength</a></code> and <code><a href='javascript:navToEntry("SXP_getNodeListItem");'>SXP_getNodeListItem</a></code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Types")'>Types</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_getNodeListItem");'>SXP_getNodeListItem</a> | <a href='javascript:navToEntry("SXP_getNodeListLength");'>SXP_getNodeListLength</a> | <a href='javascript:navToEntry("SXP_getResultNodeset");'>SXP_getResultNodeset</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_NodeType'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_NodeType</font></td>
<td class='entry-type' align='center' width='25%'>Enums</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
The type for nodes in the SXP. Possible values include:
<ul>
<li> ELEMENT_NODE,
<li> ATTRIBUTE_NODE,
<li> TEXT_NODE, 
<li> PROCESSING_INSTRUCTION_NODE,
<li> COMMENT_NODE,
<li> DOCUMENT_NODE,
<li> NAMESPACE_NODE.
</ul>
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Enums")'>Enums</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_addNamespaceDeclaration'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_addNamespaceDeclaration</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_addNamespaceDeclaration(Q, prefix, uri)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>prefix</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The namespace prefix.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>uri</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The namespace URI.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Declares a new namespace with the given prefix and URI. The
declaration will only be in effect for the next <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_addVariableBinding");'>SXP_addVariableBinding</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_addVariableBinding'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_addVariableBinding</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_addVariableBinding(Q, name, source)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>name</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The name of the variable.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>source</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>Another <code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code> which has been evaluated
already. The variable will be bound to its result expression. 
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Binds a variable to the result expression of another
<code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code>. The binding will only be in effect for the
next <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code>. <code>SXP_addVariableBinding</code> provides the
only way to bind the variable to a node set.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_addVariableBoolean");'>SXP_addVariableBoolean</a> | <a href='javascript:navToEntry("SXP_addVariableNumber");'>SXP_addVariableNumber</a> | <a href='javascript:navToEntry("SXP_addVariableString");'>SXP_addVariableString</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_addVariableBoolean'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_addVariableBoolean</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_addVariableBoolean(Q, name, value)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>name</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The name of the variable.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>value</code></td><td param-type'><code>int</code></td><td class='param-desc'>The boolean value to bind the variable to.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Binds a variable to a boolean. The binding will only be in effect for the
next <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code>. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_addVariableBinding");'>SXP_addVariableBinding</a> | <a href='javascript:navToEntry("SXP_addVariableNumber");'>SXP_addVariableNumber</a> | <a href='javascript:navToEntry("SXP_addVariableString");'>SXP_addVariableString</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_addVariableNumber'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_addVariableNumber</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_addVariableNumber(Q, name, value)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>name</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The name of the variable.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>value</code></td><td param-type'><code>double</code></td><td class='param-desc'>The number to bind the variable to.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Binds a variable to a number. The binding will only be in effect for the
next <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code>. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_addVariableBinding");'>SXP_addVariableBinding</a> | <a href='javascript:navToEntry("SXP_addVariableBoolean");'>SXP_addVariableBoolean</a> | <a href='javascript:navToEntry("SXP_addVariableString");'>SXP_addVariableString</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_addVariableString'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_addVariableString</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_addVariableString(Q, name, value)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>name</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The name of the variable.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>value</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The string to bind the variable to.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Binds a variable to a string. The binding will only be in effect for the
next <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code>. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_addVariableBinding");'>SXP_addVariableBinding</a> | <a href='javascript:navToEntry("SXP_addVariableBoolean");'>SXP_addVariableBoolean</a> | <a href='javascript:navToEntry("SXP_addVariableNumber");'>SXP_addVariableNumber</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_char'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_char</font></td>
<td class='entry-type' align='center' width='25%'>Types</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
SXP character type. Currently just UTF-8 encoded <code>char</code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Types")'>Types</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_createQueryContext'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_createQueryContext</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_createQueryContext(S, Qptr)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>S</code></td><td param-type'><code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code></td><td class='param-desc'>The current situation.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>Qptr</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a> *</code></td><td class='param-desc'>Pointer to where to store the query context.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Creates a <code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_destroyQueryContext'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_destroyQueryContext</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_destroyQueryContext(Q)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The query context to be deleted.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Destroys a <code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code>, freeing all the memory it used,
including any <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code> result and the pending variable
bindings and namespace declaration lists.  
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_getNodeListItem'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_getNodeListItem</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getNodeListItem(list, index)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>list</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_NodeList");'>SXP_NodeList</a></code></td><td class='param-desc'>A node list.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>index</code></td><td param-type'><code>int</code></td><td class='param-desc'>A zero-based index into the list.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the item at the given (zero-based) position in the node list.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_NodeList");'>SXP_NodeList</a> | <a href='javascript:navToEntry("SXP_getNodeListLength");'>SXP_getNodeListLength</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_getNodeListLength'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_getNodeListLength</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getNodeListLength(list)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>list</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_NodeList");'>SXP_NodeList</a></code></td><td class='param-desc'>A node list.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the number of items in a node list.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_NodeList");'>SXP_NodeList</a> | <a href='javascript:navToEntry("SXP_getNodeListItem");'>SXP_getNodeListItem</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_getResultBool'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_getResultBool</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getResultBool(Q, resultPtr)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>resultPtr</code></td><td param-type'><code>int*</code></td><td class='param-desc'>The pointer to store the result at.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Retrieves the result of a <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code> as a boolean, performing
a type conversion if necessary.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_getResultNodeset");'>SXP_getResultNodeset</a> | <a href='javascript:navToEntry("SXP_getResultNumber");'>SXP_getResultNumber</a> | <a href='javascript:navToEntry("SXP_getResultString");'>SXP_getResultString</a> | <a href='javascript:navToEntry("SXP_getResultType");'>SXP_getResultType</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_getResultNodeset'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_getResultNodeset</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getResultNodeset(Q, resultPtr)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>resultPtr</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_NodeList");'>SXP_NodeList</a>*</code></td><td class='param-desc'>The pointer to store the result at.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Retrieves the result of a <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code> as a nodeset. This can
be subsequently manipulated using <code><a href='javascript:navToEntry("SXP_getNodeListItem");'>SXP_getNodeListItem</a></code> and
<code><a href='javascript:navToEntry("SXP_getNodeListLength");'>SXP_getNodeListLength</a></code>. If the result is not of type
nodeset, then XPath does not allow its conversion to a nodeset,
and <code>SXP_ getResultNodeset</code> returns NULL in *resultPtr.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_NodeList");'>SXP_NodeList</a> | <a href='javascript:navToEntry("SXP_getNodeListItem");'>SXP_getNodeListItem</a> | <a href='javascript:navToEntry("SXP_getNodeListLength");'>SXP_getNodeListLength</a> | <a href='javascript:navToEntry("SXP_getResultBool");'>SXP_getResultBool</a> | <a href='javascript:navToEntry("SXP_getResultNumber");'>SXP_getResultNumber</a> | <a href='javascript:navToEntry("SXP_getResultString");'>SXP_getResultString</a> | <a href='javascript:navToEntry("SXP_getResultType");'>SXP_getResultType</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_getResultNumber'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_getResultNumber</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getResultNumber(Q, resultPtr)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>resultPtr</code></td><td param-type'><code>double*</code></td><td class='param-desc'>The pointer to store the result at.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Retrieves the result of a <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code> as a double, performing
a type conversion if necessary.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_getResultBool");'>SXP_getResultBool</a> | <a href='javascript:navToEntry("SXP_getResultNodeset");'>SXP_getResultNodeset</a> | <a href='javascript:navToEntry("SXP_getResultString");'>SXP_getResultString</a> | <a href='javascript:navToEntry("SXP_getResultType");'>SXP_getResultType</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_getResultString'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_getResultString</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getResultString(Q, resultPtr)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>resultPtr</code></td><td param-type'><code>const char**</code></td><td class='param-desc'>The pointer to store the result at.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Retrieves the result of a <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code> as a string, performing
a type conversion if necessary.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_getResultBool");'>SXP_getResultBool</a> | <a href='javascript:navToEntry("SXP_getResultNodeset");'>SXP_getResultNodeset</a> | <a href='javascript:navToEntry("SXP_getResultNumber");'>SXP_getResultNumber</a> | <a href='javascript:navToEntry("SXP_getResultType");'>SXP_getResultType</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_getResultType'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_getResultType</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_getResultType(Q, typePtr)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>typePtr</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_ExpressionType");'>SXP_ExpressionType</a>*</code></td><td class='param-desc'>The pointer to store the result type at.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Retrieves the type of a result expression (<code><a href='javascript:navToEntry("SXP_ExpressionType");'>SXP_ExpressionType</a></code>) held in
<code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code> after <code><a href='javascript:navToEntry("SXP_query");'>SXP_query</a></code> has been called.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_ExpressionType");'>SXP_ExpressionType</a> | <a href='javascript:navToEntry("SXP_getResultBool");'>SXP_getResultBool</a> | <a href='javascript:navToEntry("SXP_getResultNodeset");'>SXP_getResultNodeset</a> | <a href='javascript:navToEntry("SXP_getResultNumber");'>SXP_getResultNumber</a> | <a href='javascript:navToEntry("SXP_getResultString");'>SXP_getResultString</a> | <a href='javascript:navToEntry("SXP_query");'>SXP_query</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_query'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_query</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_query(Q, query, node, position, size)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>Q</code></td><td param-type'><code><a href='javascript:navToEntry("QueryContext");'>QueryContext</a></code></td><td class='param-desc'>The current query context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>query</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The text of the query.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The current node for the query.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>position</code></td><td param-type'><code>int</code></td><td class='param-desc'>The position of the current node in the evaluation context. As SXP
is a C interface, the position is zero-based (unlike one-based
XPath nodesets). Thus, you must set this parameter to 0 if you want 
the "position()" query to return 1.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>size</code></td><td param-type'><code>int</code></td><td class='param-desc'>The size of the evaluation context.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Evaluates a query (given as text) based on the current node, the
context position (zero-based) and the context size. Any namespaces
declared using <code><a href='javascript:navToEntry("SXP_addNamespaceDeclaration");'>SXP_addNamespaceDeclaration</a></code> are used for the
evaluation, as are the variable bindings made using functions like
<code><a href='javascript:navToEntry("SXP_addVariableString");'>SXP_addVariableString</a></code>. Upon completion of the query, the
pending namespace declarations and variable bindings are <b>cleared</b>.
</td></tr>
<tr><td class='entry-example'>
<h4 class='entry-subhead'>Example</h4>
<pre>&nbsp;&nbsp;SXP_query(Q, "node[1]/@att", root, 0, 1);
</pre></td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("QueryContext");'>QueryContext</a> | <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> | <a href='javascript:navToEntry("SXP_addNamespaceDeclaration");'>SXP_addNamespaceDeclaration</a> | <a href='javascript:navToEntry("SXP_addVariableString");'>SXP_addVariableString</a> | <a href='javascript:navToEntry("SXP_getResultString");'>SXP_getResultString</a> | <a href='javascript:navToEntry("SXP_getResultType");'>SXP_getResultType</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_registerDOMHandler'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_registerDOMHandler</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_registerDOMHandler(S, domh);
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>S</code></td><td param-type'><code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code></td><td class='param-desc'>The current situation.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>domh</code></td><td param-type'><code><a href='javascript:navToEntry("DOMHandler");'>DOMHandler</a> *</code></td><td class='param-desc'>Pointer to the new DOM handler.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Registers a new <code><a href='javascript:navToEntry("DOMHandler");'>DOMHandler</a></code> with the given
<code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code>. There may only be one DOM handler per
situation. The DOM handler will receive all DOM requests made
during evaluation with the situation S. To unregister the handler,
use <code><a href='javascript:navToEntry("SXP_unregisterDOMHandler");'>SXP_unregisterDOMHandler</a></code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("DOMHandler");'>DOMHandler</a> | <a href='javascript:navToEntry("SXP_unregisterDOMHandler");'>SXP_unregisterDOMHandler</a> | <a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SXP_unregisterDOMHandler'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SXP_unregisterDOMHandler</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SXP_unregisterDOMHandler(S)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>S</code></td><td param-type'><code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code></td><td class='param-desc'>The current situation.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Unregisters the <code><a href='javascript:navToEntry("DOMHandler");'>DOMHandler</a></code> registered with the given
<code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code>. All DOM requests will be processed in the
default way.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("DOMHandler");'>DOMHandler</a> | <a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SablotCreateSituation'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SablotCreateSituation</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SablotCreateSituation(sPtr)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>sPtr</code></td><td param-type'><code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a> *</code></td><td class='param-desc'>Pointer to where the result is to be stored.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Creates a <code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code> which is passed to many Sablotron
functions and can be later destroyed by a call to <code><a href='javascript:navToEntry("SablotDestroySituation");'>SablotDestroySituation</a></code>. 
</td></tr>
<tr><td class='entry-notes'>
<h4 class='entry-subhead'>Notes</h4>
<code>SablotCreateSituation</code> is declared in <code>sablot.h</code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SablotDestroySituation");'>SablotDestroySituation</a> | <a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SablotDestroySituation'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SablotDestroySituation</font></td>
<td class='entry-type' align='center' width='25%'>Functions</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SablotDestroySituation(S)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>S</code></td><td param-type'><code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code></td><td class='param-desc'>The situation to be freed. 
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The error code.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Frees a <code><a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a></code>.
</td></tr>
<tr><td class='entry-notes'>
<h4 class='entry-subhead'>Notes</h4>
<code>SablotDestroySituation</code> is declared in <code>sablot.h</code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Functions")'>Functions</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SablotSituation");'>SablotSituation</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='SablotSituation'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>SablotSituation</font></td>
<td class='entry-type' align='center' width='25%'>Types</td>
</tr></table>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
The type representing a general "context" for Sablotron. Mainly
used for error reporting. An object of this type can be created
using <code><a href='javascript:navToEntry("SablotCreateSituation");'>SablotCreateSituation</a></code>.
</td></tr>
<tr><td class='entry-notes'>
<h4 class='entry-subhead'>Notes</h4>
<code>SablotSituation</code> is declared in <code>sablot.h</code>.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Types")'>Types</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SablotCreateSituation");'>SablotCreateSituation</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='compareNodes'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>compareNodes</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compareNodes(node1,node2)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node1</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The first node to be compared.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>node2</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The second node to be compared.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The result of the comparison.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Compares two nodes based on the document order. Returns -1 if
node1 < node2 in this order, +1 if node1 > node2, and 0 if
the nodes are identical. Any other value signifies an error.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getAttributeCount'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getAttributeCount</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getAttributeCount(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The number of attributes of the node. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the number of attributes of the node. In particular, if the
node is not an element, 0 is returned. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getAttributeNo'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getAttributeNo</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getAttributeNo(node, index)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>index</code></td><td param-type'><code>int</code></td><td class='param-desc'>Index of an attribute.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node's attribute with the given index. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the node's attribute at the given index. If the index is
out of bounds, or if the node has no attributes, NULL is returned.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getChildCount'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getChildCount</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getChildCount(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The number of children of the node. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the number of children of the node. In particular, if the
node is neither an element nor a document node, 0 is returned. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getChildNo'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getChildNo</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getChildNo(node, index)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>index</code></td><td param-type'><code>int</code></td><td class='param-desc'>Index of a child.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node's child with the given index. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the node's child at the given index. If the index is
out of bounds, or if the node has no children, NULL is returned.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNamespaceCount'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNamespaceCount</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNamespaceCount(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>int</code></td><td class='param-desc'>The number of namespace declarations belonging to the node. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the number of namespace declarations belonging to the node. In particular, if the
node is not an element, 0 is returned. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNamespaceNo'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNamespaceNo</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNamespaceNo(node, index)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>index</code></td><td param-type'><code>int</code></td><td class='param-desc'>Index of a namespace node.
</td>
</tr>
<tr class='param-row-even'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The namespace node with the given index among those belonging
to the given node.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the namespace node which appears at the given position
among those belonging to the given node. If the index is
out of bounds, or if the node has no namespace nodes, NULL is returned.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNextAttrNS'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNextAttrNS</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNextAttrNS(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The attribute/namespace node after the given one.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
If the given node is an attribute, the following attribute is
returned; if it is a namespace node, the following namespace node
is returned. If the node is not of these two types, or if there is
no following node of the same type, the callback returns NULL.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNextSibling'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNextSibling</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNextSibling(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The next sibling of the node.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the following sibling of the node, in document order. If
there is no such sibling, returns NULL. If the node is an
attribute or a namespace node, NULL is returned. 
</td></tr>
<tr><td class='entry-notes'>
<h4 class='entry-subhead'>Notes</h4>
In the early versions of the SXP, <code>getNextSibling</code> acted
like <code><a href='javascript:navToEntry("getNextAttrNS");'>getNextAttrNS</a></code> when used on attributes and namespace
nodes.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> | <a href='javascript:navToEntry("getNextAttrNS");'>getNextAttrNS</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNodeName'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNodeName</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNodeName(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The name of the node.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the qualified name of the given node (prefix:local-part). On error, returns NULL.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNodeNameLocal'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNodeNameLocal</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNodeNameLocal(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The local name of the node.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the local part of the given node's name. On error, returns NULL.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNodeNameURI'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNodeNameURI</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNodeNameURI(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The URI of the node's namespace.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the namespace URI of the given node. On error, returns NULL.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNodeType'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNodeType</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNodeType(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_NodeType");'>SXP_NodeType</a></code></td><td class='param-desc'>The type of the node.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the type of the given node, or SXP_NONE on error.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> | <a href='javascript:navToEntry("SXP_NodeType");'>SXP_NodeType</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getNodeValue'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getNodeValue</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getNodeValue(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The value of the node.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the value of the given node, or NULL on error. The node
values are as specified in the DOM Level 1 Core specification,
with the addition that the value of a namespace node is the
namespace URI.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getOwnerDocument'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getOwnerDocument</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getOwnerDocument(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Document");'>SXP_Document</a></code></td><td class='param-desc'>The owner document. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the given node's owner document. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Document");'>SXP_Document</a> | <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getParent'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getParent</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getParent(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node's parent. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the given node's parent. If the node has no parent
(i.e. is a SXP_Document), NULL is returned. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getPreviousAttrNS'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getPreviousAttrNS</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getPreviousAttrNS(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The attribute/namespace node preceding the given one.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
If the given node is an attribute, the preceding attribute is
returned; if it is a namespace node, the preceding namespace node
is returned. If the node is not of these two types, or if there is
no preceding node of the same type, the callback returns NULL.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='getPreviousSibling'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>getPreviousSibling</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getPreviousSibling(node)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>node</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The node to operate on.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a></code></td><td class='param-desc'>The preceding sibling of the node.
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the preceding sibling of the node, in document order. If
there is no such sibling, returns NULL. If the node is an
attribute or a namespace node, NULL is returned. 
</td></tr>
<tr><td class='entry-notes'>
<h4 class='entry-subhead'>Notes</h4>
In the early versions of the SXP, <code>getPreviousSibling</code> acted
like <code><a href='javascript:navToEntry("getPreviousAttrNS");'>getPreviousAttrNS</a></code> when used on attributes and namespace
nodes.
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Node");'>SXP_Node</a> | <a href='javascript:navToEntry("getPreviousAttrNS");'>getPreviousAttrNS</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
<a name='retrieveDocument'></a>
<center><table class='api-entry' width='100%' cellspacing='0'border='1' cellpadding='10'>
<tr><td class='entry-heading'>
<table class='entry-heading-table' width='100%' cellpadding='5'cellspacing='0'><tr>
<td class='entry-title' valign='center'><font size='+5'>retrieveDocument</font></td>
<td class='entry-type' align='center' width='25%'>Callbacks</td>
</tr></table>
</td></tr>
<tr><td class='entry-syntax'>
<h4 class='entry-subhead'>Syntax</h4><pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retrieveDocument(uri)
</pre>
<center><table class='param-list' border='1' cellpadding='3' cellspacing='1'><tr class='param-list-head'><th>Name</th><th>Type</th><th>Description</th></tr>
<tr class='param-row-even'><td class='param-name'><code>uri</code></td><td param-type'><code>const SXP_char*</code></td><td class='param-desc'>The URI of the document to be retrieved.
</td>
</tr>
<tr class='param-row-odd'><td class='param-name'><code>(RET)</code></td><td param-type'><code><a href='javascript:navToEntry("SXP_Document");'>SXP_Document</a></code></td><td class='param-desc'>The retrieved document. 
</td>
</tr>
</table></center>
</td></tr>
<tr><td class='entry-description'>
<h4 class='entry-subhead'>Description</h4>
Returns the document found at the given URI. If the document could
not be retrieved, NULL is returned. 
</td></tr>
<tr><td class='entry-seealso'>
<h4 class='entry-subhead'>See Also</h4>
<table class='seealso-table'>
<tr class='seealso-groups'><td>Groups</td>
<td>[ <a href='javascript:navToGroup("GROUP_Callbacks")'>Callbacks</a> ]</td></tr>
<tr class='seealso-internals'><td>Entries</td>
<td>[ <a href='javascript:navToEntry("SXP_Document");'>SXP_Document</a> ]</td></tr>

</table>
</td></tr>
</table></center><br>
&copy; 2001-2003 Ginger Alliance<BR><i>revision 03-01-31</i><BR>
<center>This page was generated by <a href='http://www.mozilla.org/projects/apidoc' target='other_window'><b>APIDOC</b></a></center>
</body></html>