Hash :
2ad1dfff
Author :
Date :
2003-11-15T10:35:20
rebuilt the generated pages (again), manually restored doc/html/index.html * doc/Makefile.am doc/*.html doc/html/*.html: rebuilt the generated pages (again), manually restored doc/html/index.html and manually edited generated file doc/gnome-xml.xml to put in appropriate headings. * doc/docdescr.doc: new file to describe details of the document generation (helps my memory for the next time) * genChRanges.py,chvalid.c,include/libxml/chvalid.h: minor enhancement to please the automatic documentation generation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>xpathInternals</title><meta name="generator" content="DocBook XSL Stylesheets V1.48"><meta name="generator" content="GTK-Doc V1.1 (XML mode)"><style type="text/css">
.synopsis, .classsynopsis {
background: #eeeeee;
border: solid 1px #aaaaaa;
padding: 0.5em;
}
.programlisting {
background: #eeeeff;
border: solid 1px #aaaaff;
padding: 0.5em;
}
.variablelist {
padding: 4px;
margin-left: 3em;
}
.navigation {
background: #ffeeee;
border: solid 1px #ffaaaa;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.navigation a {
color: #770000;
}
.navigation a:visited {
color: #550000;
}
.navigation .title {
font-size: 200%;
}
</style><link rel="home" href="index.html" title="Gnome XML Library Reference Manual "><link rel="up" href="ch01.html" title="Libxml Programming Notes"><link rel="previous" href="libxml-relaxng.html" title="relaxng"><link rel="next" href="libxml-xmlversion.html" title="xmlversion"></head><body text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-relaxng.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Gnome XML Library Reference Manual </th><td><a accesskey="n" href="libxml-xmlversion.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr></table><div class="refentry"><a name="libxml-xpathInternals"></a><div class="titlepage"></div><div class="refnamediv"><h2>xpathInternals</h2><p>xpathInternals — </p></div><div class="refsynopsisdiv"><h2><h1 class="title"><a name="id2626358"></a>Synopsis</h1></h2><pre class="synopsis">
#define <a href="libxml-xpathInternals.html#xmlXPathSetError">xmlXPathSetError</a> (ctxt, err)
#define <a href="libxml-xpathInternals.html#xmlXPathSetArityError">xmlXPathSetArityError</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathSetTypeError">xmlXPathSetTypeError</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathGetError">xmlXPathGetError</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathCheckError">xmlXPathCheckError</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathGetDocument">xmlXPathGetDocument</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathGetContextNode">xmlXPathGetContextNode</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnBoolean">xmlXPathReturnBoolean</a> (ctxt, val)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnTrue">xmlXPathReturnTrue</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnFalse">xmlXPathReturnFalse</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnNumber">xmlXPathReturnNumber</a> (ctxt, val)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnString">xmlXPathReturnString</a> (ctxt, str)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnEmptyString">xmlXPathReturnEmptyString</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnNodeSet">xmlXPathReturnNodeSet</a> (ctxt, ns)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnEmptyNodeSet">xmlXPathReturnEmptyNodeSet</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathReturnExternal">xmlXPathReturnExternal</a> (ctxt, val)
#define <a href="libxml-xpathInternals.html#xmlXPathStackIsNodeSet">xmlXPathStackIsNodeSet</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathStackIsExternal">xmlXPathStackIsExternal</a> (ctxt)
#define <a href="libxml-xpathInternals.html#xmlXPathEmptyNodeSet">xmlXPathEmptyNodeSet</a> (ns)
#define <a href="libxml-xpathInternals.html#CHECK-ERROR-CAPS">CHECK_ERROR</a>
#define <a href="libxml-xpathInternals.html#CHECK-ERROR0-CAPS">CHECK_ERROR0</a>
#define <a href="libxml-xpathInternals.html#XP-ERROR-CAPS">XP_ERROR</a> (X)
#define <a href="libxml-xpathInternals.html#XP-ERROR0-CAPS">XP_ERROR0</a> (X)
#define <a href="libxml-xpathInternals.html#CHECK-TYPE-CAPS">CHECK_TYPE</a> (typeval)
#define <a href="libxml-xpathInternals.html#CHECK-TYPE0-CAPS">CHECK_TYPE0</a> (typeval)
#define <a href="libxml-xpathInternals.html#CHECK-ARITY-CAPS">CHECK_ARITY</a> (x)
#define <a href="libxml-xpathInternals.html#CAST-TO-STRING-CAPS">CAST_TO_STRING</a>
#define <a href="libxml-xpathInternals.html#CAST-TO-NUMBER-CAPS">CAST_TO_NUMBER</a>
#define <a href="libxml-xpathInternals.html#CAST-TO-BOOLEAN-CAPS">CAST_TO_BOOLEAN</a>
<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> (<a href="libxml-xpathInternals.html#xmlXPathVariableLookupFunc">*xmlXPathVariableLookupFunc</a>)
(void *ctxt,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *ns_uri);
<a href="libxml-xpath.html#xmlXPathFunction">xmlXPathFunction</a> (<a href="libxml-xpathInternals.html#xmlXPathFuncLookupFunc">*xmlXPathFuncLookupFunc</a>) (void *ctxt,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *ns_uri);
</pre></div><div class="refsect1"><h2>Description</h2><p>
</p></div><div class="refsect1"><h2>Details</h2><div class="refsect2"><h3><a name="xmlXPathSetError"></a>xmlXPathSetError()</h3><pre class="programlisting">#define xmlXPathSetError(ctxt, err)</pre><p>
Raises an error.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td> an xmlXPathError code
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathSetArityError"></a>xmlXPathSetArityError()</h3><pre class="programlisting">#define xmlXPathSetArityError(ctxt)</pre><p>
Raises an XPATH_INVALID_ARITY error.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathSetTypeError"></a>xmlXPathSetTypeError()</h3><pre class="programlisting">#define xmlXPathSetTypeError(ctxt)</pre><p>
Raises an XPATH_INVALID_TYPE error.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathGetError"></a>xmlXPathGetError()</h3><pre class="programlisting">#define xmlXPathGetError(ctxt) ((ctxt)->error)
</pre><p>
Get the error code of an XPath context.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathCheckError"></a>xmlXPathCheckError()</h3><pre class="programlisting">#define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK)
</pre><p>
Check if an XPath error was raised.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathGetDocument"></a>xmlXPathGetDocument()</h3><pre class="programlisting">#define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc)
</pre><p>
Get the document of an XPath context.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathGetContextNode"></a>xmlXPathGetContextNode()</h3><pre class="programlisting">#define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node)
</pre><p>
Get the context node of an XPath context.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnBoolean"></a>xmlXPathReturnBoolean()</h3><pre class="programlisting">#define xmlXPathReturnBoolean(ctxt, val)</pre><p>
Pushes the boolean <i><tt>val</tt></i> on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td> a boolean
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnTrue"></a>xmlXPathReturnTrue()</h3><pre class="programlisting">#define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1)
</pre><p>
Pushes true on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnFalse"></a>xmlXPathReturnFalse()</h3><pre class="programlisting">#define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0)
</pre><p>
Pushes false on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnNumber"></a>xmlXPathReturnNumber()</h3><pre class="programlisting">#define xmlXPathReturnNumber(ctxt, val)</pre><p>
Pushes the double <i><tt>val</tt></i> on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td> a double
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnString"></a>xmlXPathReturnString()</h3><pre class="programlisting">#define xmlXPathReturnString(ctxt, str)</pre><p>
Pushes the string <i><tt>str</tt></i> on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td> a string
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnEmptyString"></a>xmlXPathReturnEmptyString()</h3><pre class="programlisting">#define xmlXPathReturnEmptyString(ctxt)</pre><p>
Pushes an empty string on the stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnNodeSet"></a>xmlXPathReturnNodeSet()</h3><pre class="programlisting">#define xmlXPathReturnNodeSet(ctxt, ns)</pre><p>
Pushes the node-set <i><tt>ns</tt></i> on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td> a node-set
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnEmptyNodeSet"></a>xmlXPathReturnEmptyNodeSet()</h3><pre class="programlisting">#define xmlXPathReturnEmptyNodeSet(ctxt)</pre><p>
Pushes an empty node-set on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathReturnExternal"></a>xmlXPathReturnExternal()</h3><pre class="programlisting">#define xmlXPathReturnExternal(ctxt, val)</pre><p>
Pushes user data on the context stack.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td> user data
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathStackIsNodeSet"></a>xmlXPathStackIsNodeSet()</h3><pre class="programlisting">#define xmlXPathStackIsNodeSet(ctxt)</pre><p>
Check if the current value on the XPath stack is a node set or
an XSLT value tree.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathStackIsExternal"></a>xmlXPathStackIsExternal()</h3><pre class="programlisting">#define xmlXPathStackIsExternal(ctxt)</pre><p>
Checks if the current value on the XPath stack is an external
object.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath parser context
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathEmptyNodeSet"></a>xmlXPathEmptyNodeSet()</h3><pre class="programlisting">#define xmlXPathEmptyNodeSet(ns)</pre><p>
Empties a node-set.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td> a node-set
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="CHECK-ERROR-CAPS"></a>CHECK_ERROR</h3><pre class="programlisting">#define CHECK_ERROR</pre><p>
Macro to return from the function if an XPath error was detected.</p><p>
</p></div><hr><div class="refsect2"><h3><a name="CHECK-ERROR0-CAPS"></a>CHECK_ERROR0</h3><pre class="programlisting">#define CHECK_ERROR0</pre><p>
Macro to return 0 from the function if an XPath error was detected.</p><p>
</p></div><hr><div class="refsect2"><h3><a name="XP-ERROR-CAPS"></a>XP_ERROR()</h3><pre class="programlisting">#define XP_ERROR(X)</pre><p>
Macro to raise an XPath error and return.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>X</tt></i>:</span></td><td> the error code
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="XP-ERROR0-CAPS"></a>XP_ERROR0()</h3><pre class="programlisting">#define XP_ERROR0(X)</pre><p>
Macro to raise an XPath error and return 0.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>X</tt></i>:</span></td><td> the error code
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="CHECK-TYPE-CAPS"></a>CHECK_TYPE()</h3><pre class="programlisting">#define CHECK_TYPE(typeval)</pre><p>
Macro to check that the value on top of the XPath stack is of a given
type.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>typeval</tt></i>:</span></td><td> the XPath type
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="CHECK-TYPE0-CAPS"></a>CHECK_TYPE0()</h3><pre class="programlisting">#define CHECK_TYPE0(typeval)</pre><p>
Macro to check that the value on top of the XPath stack is of a given
type. Return(0) in case of failure</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>typeval</tt></i>:</span></td><td> the XPath type
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="CHECK-ARITY-CAPS"></a>CHECK_ARITY()</h3><pre class="programlisting">#define CHECK_ARITY(x)</pre><p>
Macro to check that the number of args passed to an XPath function matches.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>x</tt></i>:</span></td><td> the number of expected args
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="CAST-TO-STRING-CAPS"></a>CAST_TO_STRING</h3><pre class="programlisting">#define CAST_TO_STRING</pre><p>
Macro to try to cast the value on the top of the XPath stack to a string.</p><p>
</p></div><hr><div class="refsect2"><h3><a name="CAST-TO-NUMBER-CAPS"></a>CAST_TO_NUMBER</h3><pre class="programlisting">#define CAST_TO_NUMBER</pre><p>
Macro to try to cast the value on the top of the XPath stack to a number.</p><p>
</p></div><hr><div class="refsect2"><h3><a name="CAST-TO-BOOLEAN-CAPS"></a>CAST_TO_BOOLEAN</h3><pre class="programlisting">#define CAST_TO_BOOLEAN</pre><p>
Macro to try to cast the value on the top of the XPath stack to a boolean.</p><p>
</p></div><hr><div class="refsect2"><h3><a name="xmlXPathVariableLookupFunc"></a>xmlXPathVariableLookupFunc ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> (*xmlXPathVariableLookupFunc)
(void *ctxt,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *ns_uri);</pre><p>
Prototype for callbacks used to plug variable lookup in the XPath
engine.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath context
</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td> name of the variable
</td></tr><tr><td><span class="term"><i><tt>ns_uri</tt></i>:</span></td><td> the namespace name hosting this variable
</td></tr><tr><td><span class="term"><span class="emphasis"><i>Returns</i></span> :</span></td><td>the XPath object value or NULL if not found.
</td></tr></tbody></table></div></div><hr><div class="refsect2"><h3><a name="xmlXPathFuncLookupFunc"></a>xmlXPathFuncLookupFunc ()</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathFunction">xmlXPathFunction</a> (*xmlXPathFuncLookupFunc) (void *ctxt,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
const <a href="libxml-tree.html#xmlChar">xmlChar</a> *ns_uri);</pre><p>
Prototype for callbacks used to plug function lookup in the XPath
engine.</p><p>
</p><div class="variablelist"><table border="0"><col align="left"><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td> an XPath context
</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td> name of the function
</td></tr><tr><td><span class="term"><i><tt>ns_uri</tt></i>:</span></td><td> the namespace name hosting this function
</td></tr><tr><td><span class="term"><span class="emphasis"><i>Returns</i></span> :</span></td><td>the XPath function or NULL if not found.
</td></tr></tbody></table></div></div></div></div><table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="libxml-relaxng.html"><b><< relaxng</b></a></td><td align="right"><a accesskey="n" href="libxml-xmlversion.html"><b>xmlversion >></b></a></td></tr></table></body></html>