blob: f40de13355661e4c4234c3f340171ccd4878e2da [file] [log] [blame]
Daniel Veillardd4330462003-04-29 12:40:16 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>encoding</title><meta name="generator" content="DocBook XSL Stylesheets V1.58.1"><style xmlns="http://www.w3.org/TR/xhtml1/transitional" type="text/css">
3 .synopsis, .classsynopsis {
4 background: #eeeeee;
5 border: solid 1px #aaaaaa;
6 padding: 0.5em;
7 }
8 .programlisting {
9 background: #eeeeff;
10 border: solid 1px #aaaaff;
11 padding: 0.5em;
12 }
13 .variablelist {
14 padding: 4px;
15 margin-left: 3em;
16 }
17 .navigation {
18 background: #ffeeee;
19 border: solid 1px #ffaaaa;
20 margin-top: 0.5em;
21 margin-bottom: 0.5em;
22 }
23 .navigation a {
24 color: #770000;
25 }
26 .navigation a:visited {
27 color: #550000;
28 }
29 .navigation .title {
30 font-size: 200%;
31 }
32 </style><link rel="home" href="index.html" title="Gnome XML Library Reference Manual"><link rel="up" href="libxml-lib.html" title="Libxml Library Reference"><link rel="previous" href="libxml-parserInternals.html" title="parserInternals"><link rel="next" href="libxml-hash.html" title="hash"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-parserInternals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></img></a></td><td><a accesskey="u" href="libxml-lib.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></img></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></img></a></td><th width="100%" align="center">Gnome XML Library Reference Manual</th><td><a accesskey="n" href="libxml-hash.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></img></a></td></tr></table><div class="refentry" lang="en"><a name="libxml-encoding"></a><div class="titlepage"></div><div class="refnamediv"><h2>encoding</h2><p>encoding &#8212; </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">
Daniel Veillardaeea04f2000-01-25 19:27:27 +000033
Daniel Veillardd4330462003-04-29 12:40:16 +000034
35
36enum <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a>;
37int (<a href="libxml-encoding.html#xmlCharEncodingInputFunc">*xmlCharEncodingInputFunc</a>) (unsigned char *out,
Daniel Veillard3f6f7f62000-06-30 17:58:25 +000038 int *outlen,
Daniel Veillardaeea04f2000-01-25 19:27:27 +000039 unsigned char *in,
Daniel Veillardedfb29b2000-03-14 19:59:05 +000040 int *inlen);
Daniel Veillardd4330462003-04-29 12:40:16 +000041int (<a href="libxml-encoding.html#xmlCharEncodingOutputFunc">*xmlCharEncodingOutputFunc</a>) (unsigned char *out,
Daniel Veillard3f6f7f62000-06-30 17:58:25 +000042 int *outlen,
Daniel Veillardaeea04f2000-01-25 19:27:27 +000043 unsigned char *in,
Daniel Veillardedfb29b2000-03-14 19:59:05 +000044 int *inlen);
Daniel Veillardd4330462003-04-29 12:40:16 +000045struct <a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a>;
46typedef <a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>;
47void <a href="libxml-encoding.html#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a> (void);
48void <a href="libxml-encoding.html#xmlCleanupCharEncodingHandlers">xmlCleanupCharEncodingHandlers</a> (void);
49void <a href="libxml-encoding.html#xmlRegisterCharEncodingHandler">xmlRegisterCharEncodingHandler</a> (<a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler);
50<a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> <a href="libxml-encoding.html#xmlGetCharEncodingHandler">xmlGetCharEncodingHandler</a>
51 (<a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
52<a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> <a href="libxml-encoding.html#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a>
Daniel Veillardedfb29b2000-03-14 19:59:05 +000053 (const char *name);
Daniel Veillardd4330462003-04-29 12:40:16 +000054<a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> <a href="libxml-encoding.html#xmlNewCharEncodingHandler">xmlNewCharEncodingHandler</a>
Daniel Veillard2ace1952002-09-26 12:28:02 +000055 (const char *name,
Daniel Veillardd4330462003-04-29 12:40:16 +000056 <a href="libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a> input,
57 <a href="libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> output);
58int <a href="libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a> (const char *name,
Daniel Veillard3bff2b02000-10-01 20:33:47 +000059 const char *alias);
Daniel Veillardd4330462003-04-29 12:40:16 +000060int <a href="libxml-encoding.html#xmlDelEncodingAlias">xmlDelEncodingAlias</a> (const char *alias);
61const char* <a href="libxml-encoding.html#xmlGetEncodingAlias">xmlGetEncodingAlias</a> (const char *alias);
62void <a href="libxml-encoding.html#xmlCleanupEncodingAliases">xmlCleanupEncodingAliases</a> (void);
63<a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> <a href="libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a> (const char *name);
64const char* <a href="libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a> (<a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
65<a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> <a href="libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a> (unsigned char *in,
Daniel Veillard3bff2b02000-10-01 20:33:47 +000066 int len);
Daniel Veillardd4330462003-04-29 12:40:16 +000067int <a href="libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a> (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler,
68 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> out,
69 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);
70int <a href="libxml-encoding.html#xmlCharEncInFunc">xmlCharEncInFunc</a> (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler,
71 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> out,
72 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);
73int <a href="libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a> (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler,
74 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> out,
75 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);
76int <a href="libxml-encoding.html#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a> (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler);
77int <a href="libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a> (unsigned char *out,
Daniel Veillarda41123c2001-04-22 19:31:20 +000078 int *outlen,
79 unsigned char *in,
80 int *inlen);
Daniel Veillardd4330462003-04-29 12:40:16 +000081int <a href="libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a> (unsigned char *out,
Daniel Veillarda41123c2001-04-22 19:31:20 +000082 int *outlen,
83 unsigned char *in,
84 int *inlen);
Daniel Veillardd4330462003-04-29 12:40:16 +000085int <a href="libxml-encoding.html#xmlGetUTF8Char">xmlGetUTF8Char</a> (unsigned char *utf,
Daniel Veillardaec63562003-03-23 20:42:17 +000086 int *len);
Daniel Veillardd4330462003-04-29 12:40:16 +000087int <a href="libxml-encoding.html#xmlCheckUTF8">xmlCheckUTF8</a> (unsigned char *utf);
88int <a href="libxml-encoding.html#xmlUTF8Strsize">xmlUTF8Strsize</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
Daniel Veillard4ec885a2001-06-17 10:31:07 +000089 int len);
Daniel Veillardd4330462003-04-29 12:40:16 +000090<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-encoding.html#xmlUTF8Strndup">xmlUTF8Strndup</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
Daniel Veillard4ec885a2001-06-17 10:31:07 +000091 int len);
Daniel Veillardd4330462003-04-29 12:40:16 +000092<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-encoding.html#xmlUTF8Strpos">xmlUTF8Strpos</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
Daniel Veillard4ec885a2001-06-17 10:31:07 +000093 int pos);
Daniel Veillardd4330462003-04-29 12:40:16 +000094int <a href="libxml-encoding.html#xmlUTF8Strloc">xmlUTF8Strloc</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
95 const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utfchar);
96<a href="libxml-tree.html#xmlChar">xmlChar</a>* <a href="libxml-encoding.html#xmlUTF8Strsub">xmlUTF8Strsub</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
Daniel Veillard4ec885a2001-06-17 10:31:07 +000097 int start,
98 int len);
Daniel Veillardd4330462003-04-29 12:40:16 +000099int <a href="libxml-encoding.html#xmlUTF8Strlen">xmlUTF8Strlen</a> (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf);
100</pre></div><div class="refsect1" lang="en"><h2>Description</h2><p>
101
102</p></div><div class="refsect1" lang="en"><h2>Details</h2><div class="refsect2" lang="en"><h3><a name="xmlCharEncoding"></a>enum xmlCharEncoding</h3><pre class="programlisting">typedef enum {
Daniel Veillardaeea04f2000-01-25 19:27:27 +0000103 XML_CHAR_ENCODING_ERROR= -1, /* No char encoding detected */
104 XML_CHAR_ENCODING_NONE= 0, /* No char encoding detected */
105 XML_CHAR_ENCODING_UTF8= 1, /* UTF-8 */
106 XML_CHAR_ENCODING_UTF16LE= 2, /* UTF-16 little endian */
107 XML_CHAR_ENCODING_UTF16BE= 3, /* UTF-16 big endian */
108 XML_CHAR_ENCODING_UCS4LE= 4, /* UCS-4 little endian */
109 XML_CHAR_ENCODING_UCS4BE= 5, /* UCS-4 big endian */
110 XML_CHAR_ENCODING_EBCDIC= 6, /* EBCDIC uh! */
111 XML_CHAR_ENCODING_UCS4_2143=7, /* UCS-4 unusual ordering */
112 XML_CHAR_ENCODING_UCS4_3412=8, /* UCS-4 unusual ordering */
113 XML_CHAR_ENCODING_UCS2= 9, /* UCS-2 */
114 XML_CHAR_ENCODING_8859_1= 10,/* ISO-8859-1 ISO Latin 1 */
115 XML_CHAR_ENCODING_8859_2= 11,/* ISO-8859-2 ISO Latin 2 */
116 XML_CHAR_ENCODING_8859_3= 12,/* ISO-8859-3 */
117 XML_CHAR_ENCODING_8859_4= 13,/* ISO-8859-4 */
118 XML_CHAR_ENCODING_8859_5= 14,/* ISO-8859-5 */
119 XML_CHAR_ENCODING_8859_6= 15,/* ISO-8859-6 */
120 XML_CHAR_ENCODING_8859_7= 16,/* ISO-8859-7 */
121 XML_CHAR_ENCODING_8859_8= 17,/* ISO-8859-8 */
122 XML_CHAR_ENCODING_8859_9= 18,/* ISO-8859-9 */
123 XML_CHAR_ENCODING_2022_JP= 19,/* ISO-2022-JP */
124 XML_CHAR_ENCODING_SHIFT_JIS=20,/* Shift_JIS */
Daniel Veillarde46e20d2000-07-14 15:02:46 +0000125 XML_CHAR_ENCODING_EUC_JP= 21,/* EUC-JP */
126 XML_CHAR_ENCODING_ASCII= 22 /* pure ASCII */
Daniel Veillardd4330462003-04-29 12:40:16 +0000127} xmlCharEncoding;
128</pre><p>
129Predefined values for some standard encodings.
Daniel Veillard19274092002-03-25 16:48:03 +0000130Libxml don't do beforehand translation on UTF8, ISOLatinX.
Daniel Veillardd4330462003-04-29 12:40:16 +0000131It also support UTF16 (LE and BE) by default.
132</p><p>
133Anything else would have to be translated to UTF8 before being
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000134given to the parser itself. The BOM for UTF16 and the encoding
135declaration are looked at and a converter is looked for at that
136point. If not found the parser stops here as asked by the XML REC
137Converter can be registered by the user using xmlRegisterCharEncodingHandler
Daniel Veillardcbaf3992001-12-31 16:16:02 +0000138but the current form doesn't allow stateful transcoding (a serious
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000139problem agreed !). If iconv has been found it will be used
140automatically and allow stateful transcoding, the simplest is then
141to be sure to enable icon and to provide iconv libs for the encoding
Daniel Veillardd4330462003-04-29 12:40:16 +0000142support needed.</p><p>
143
144</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncodingInputFunc"></a>xmlCharEncodingInputFunc ()</h3><pre class="programlisting">int (*xmlCharEncodingInputFunc) (unsigned char *out,
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000145 int *outlen,
Daniel Veillardaeea04f2000-01-25 19:27:27 +0000146 unsigned char *in,
Daniel Veillardd4330462003-04-29 12:40:16 +0000147 int *inlen);</pre><p>
148Take a block of chars in the original encoding and try to convert
149it to an UTF-8 block of chars out.</p><p>
150
151</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>out</tt></i> :</span></td><td> a pointer to an array of bytes to store the UTF-8 result
152</td></tr><tr><td><span class="term"><i><tt>outlen</tt></i> :</span></td><td> the length of <i><tt>out</tt></i>
153</td></tr><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> a pointer to an array of chars in the original encoding
154</td></tr><tr><td><span class="term"><i><tt>inlen</tt></i> :</span></td><td> the length of <i><tt>in</tt></i>
155</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of byte written, or -1 by lack of space, or -2
156 if the transcoding failed.
157The value of <i><tt>inlen</tt></i> after return is the number of octets consumed
158 as the return value is positive, else unpredictiable.
159The value of <i><tt>outlen</tt></i> after return is the number of octets consumed.
160</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncodingOutputFunc"></a>xmlCharEncodingOutputFunc ()</h3><pre class="programlisting">int (*xmlCharEncodingOutputFunc) (unsigned char *out,
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000161 int *outlen,
Daniel Veillardaeea04f2000-01-25 19:27:27 +0000162 unsigned char *in,
Daniel Veillardd4330462003-04-29 12:40:16 +0000163 int *inlen);</pre><p>
164Take a block of UTF-8 chars in and try to convert it to an other
Daniel Veillarde7ead2d2001-08-22 23:44:09 +0000165encoding.
166Note: a first call designed to produce heading info is called with
Daniel Veillardd4330462003-04-29 12:40:16 +0000167in = NULL. If stateful this should also initialize the encoder state.</p><p>
168
169</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>out</tt></i> :</span></td><td> a pointer to an array of bytes to store the result
170</td></tr><tr><td><span class="term"><i><tt>outlen</tt></i> :</span></td><td> the length of <i><tt>out</tt></i>
171</td></tr><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> a pointer to an array of UTF-8 chars
172</td></tr><tr><td><span class="term"><i><tt>inlen</tt></i> :</span></td><td> the length of <i><tt>in</tt></i>
173</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of byte written, or -1 by lack of space, or -2
174 if the transcoding failed.
175The value of <i><tt>inlen</tt></i> after return is the number of octets consumed
176 as the return value is positive, else unpredictiable.
177The value of <i><tt>outlen</tt></i> after return is the number of ocetes consumed.
178</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncodingHandler"></a>struct xmlCharEncodingHandler</h3><pre class="programlisting">struct xmlCharEncodingHandler {
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000179 char *name;
180 xmlCharEncodingInputFunc input;
181 xmlCharEncodingOutputFunc output;
182#ifdef LIBXML_ICONV_ENABLED
183 iconv_t iconv_in;
184 iconv_t iconv_out;
185#endif /* LIBXML_ICONV_ENABLED */
Daniel Veillardd4330462003-04-29 12:40:16 +0000186};
187</pre><p>
188
189</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncodingHandlerPtr"></a>xmlCharEncodingHandlerPtr</h3><pre class="programlisting">typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
190</pre><p>
191
192</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlInitCharEncodingHandlers"></a>xmlInitCharEncodingHandlers ()</h3><pre class="programlisting">void xmlInitCharEncodingHandlers (void);</pre><p>
193Initialize the char encoding support, it registers the default
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000194encoding supported.
195NOTE: while public, this function usually doesn't need to be called
Daniel Veillardd4330462003-04-29 12:40:16 +0000196 in normal processing.</p><p>
197
198</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCleanupCharEncodingHandlers"></a>xmlCleanupCharEncodingHandlers ()</h3><pre class="programlisting">void xmlCleanupCharEncodingHandlers (void);</pre><p>
199Cleanup the memory allocated for the char encoding support, it
200unregisters all the encoding handlers and the aliases.</p><p>
201
202</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlRegisterCharEncodingHandler"></a>xmlRegisterCharEncodingHandler ()</h3><pre class="programlisting">void xmlRegisterCharEncodingHandler (<a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler);</pre><p>
203Register the char encoding handler, surprising, isn't it ?</p><p>
204
205</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>handler</tt></i> :</span></td><td> the xmlCharEncodingHandlerPtr handler block
206</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlGetCharEncodingHandler"></a>xmlGetCharEncodingHandler ()</h3><pre class="programlisting"><a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> xmlGetCharEncodingHandler
207 (<a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);</pre><p>
208Search in the registered set the handler able to read/write that encoding.</p><p>
209
210</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>enc</tt></i> :</span></td><td> an xmlCharEncoding value.
211</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the handler or NULL if not found
212</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlFindCharEncodingHandler"></a>xmlFindCharEncodingHandler ()</h3><pre class="programlisting"><a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> xmlFindCharEncodingHandler
213 (const char *name);</pre><p>
214Search in the registered set the handler able to read/write that encoding.</p><p>
215
216</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> a string describing the char encoding.
217</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the handler or NULL if not found
218</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlNewCharEncodingHandler"></a>xmlNewCharEncodingHandler ()</h3><pre class="programlisting"><a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> xmlNewCharEncodingHandler
Daniel Veillard2ace1952002-09-26 12:28:02 +0000219 (const char *name,
Daniel Veillardd4330462003-04-29 12:40:16 +0000220 <a href="libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a> input,
221 <a href="libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> output);</pre><p>
222Create and registers an xmlCharEncodingHandler.</p><p>
223
224</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the encoding name, in UTF-8 format (ASCII actually)
225</td></tr><tr><td><span class="term"><i><tt>input</tt></i> :</span></td><td> the xmlCharEncodingInputFunc to read that encoding
226</td></tr><tr><td><span class="term"><i><tt>output</tt></i> :</span></td><td> the xmlCharEncodingOutputFunc to write that encoding
227</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the xmlCharEncodingHandlerPtr created (or NULL in case of error).
228</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlAddEncodingAlias"></a>xmlAddEncodingAlias ()</h3><pre class="programlisting">int xmlAddEncodingAlias (const char *name,
229 const char *alias);</pre><p>
230Registers and alias <i><tt>alias</tt></i> for an encoding named <i><tt>name</tt></i>. Existing alias
231will be overwritten.</p><p>
232
233</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the encoding name as parsed, in UTF-8 format (ASCII actually)
234</td></tr><tr><td><span class="term"><i><tt>alias</tt></i> :</span></td><td> the alias name as parsed, in UTF-8 format (ASCII actually)
235</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 in case of success, -1 in case of error
236</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlDelEncodingAlias"></a>xmlDelEncodingAlias ()</h3><pre class="programlisting">int xmlDelEncodingAlias (const char *alias);</pre><p>
237Unregisters an encoding alias <i><tt>alias</tt></i></p><p>
238
239</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>alias</tt></i> :</span></td><td> the alias name as parsed, in UTF-8 format (ASCII actually)
240</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 in case of success, -1 in case of error
241</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlGetEncodingAlias"></a>xmlGetEncodingAlias ()</h3><pre class="programlisting">const char* xmlGetEncodingAlias (const char *alias);</pre><p>
242Lookup an encoding name for the given alias.</p><p>
243
244</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>alias</tt></i> :</span></td><td> the alias name as parsed, in UTF-8 format (ASCII actually)
245</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>NULL if not found the original name otherwise
246</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCleanupEncodingAliases"></a>xmlCleanupEncodingAliases ()</h3><pre class="programlisting">void xmlCleanupEncodingAliases (void);</pre><p>
247Unregisters all aliases</p><p>
248
249</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlParseCharEncoding"></a>xmlParseCharEncoding ()</h3><pre class="programlisting"><a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> xmlParseCharEncoding (const char *name);</pre><p>
250Compare the string to the known encoding schemes already known. Note
Daniel Veillard3bff2b02000-10-01 20:33:47 +0000251that the comparison is case insensitive accordingly to the section
Daniel Veillardd4330462003-04-29 12:40:16 +0000252[XML] 4.3.3 Character Encoding in Entities.</p><p>
253
254</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the encoding name as parsed, in UTF-8 format (ASCII actually)
255</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>one of the XML_CHAR_ENCODING_... values or XML_CHAR_ENCODING_NONE
256if not recognized.
257</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlGetCharEncodingName"></a>xmlGetCharEncodingName ()</h3><pre class="programlisting">const char* xmlGetCharEncodingName (<a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);</pre><p>
258The &quot;canonical&quot; name for XML encoding.
259C.f. http://www.w3.org/TR/REC-xml<GTKDOCLINK xmlns="http://www.w3.org/TR/xhtml1/transitional" HREF="charencoding">charencoding</GTKDOCLINK>
260Section 4.3.3 Character Encoding in Entities</p><p>
261
262</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>enc</tt></i> :</span></td><td> the encoding
263</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the canonical name for the given encoding
264</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlDetectCharEncoding"></a>xmlDetectCharEncoding ()</h3><pre class="programlisting"><a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> xmlDetectCharEncoding (unsigned char *in,
265 int len);</pre><p>
266Guess the encoding of the entity using the first bytes of the entity content
267accordingly of the non-normative appendix F of the XML-1.0 recommendation.</p><p>
268
269</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> a pointer to the first bytes of the XML entity, must be at least
270 4 bytes long.
271</td></tr><tr><td><span class="term"><i><tt>len</tt></i> :</span></td><td> pointer to the length of the buffer
272</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>one of the XML_CHAR_ENCODING_... values.
273</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncOutFunc"></a>xmlCharEncOutFunc ()</h3><pre class="programlisting">int xmlCharEncOutFunc (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler,
274 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> out,
275 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);</pre><p>
276Generic front-end for the encoding handler output function
277a first call with <i><tt>in</tt></i> == NULL has to be made firs to initiate the
Daniel Veillard3f6f7f62000-06-30 17:58:25 +0000278output in case of non-stateless encoding needing to initiate their
279state or the output (like the BOM in UTF16).
280In case of UTF8 sequence conversion errors for the given encoder,
Daniel Veillardd4330462003-04-29 12:40:16 +0000281the content will be automatically remapped to a CharRef sequence.</p><p>
282
283</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>handler</tt></i> :</span></td><td> char enconding transformation data structure
284</td></tr><tr><td><span class="term"><i><tt>out</tt></i> :</span></td><td> an xmlBuffer for the output.
285</td></tr><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> an xmlBuffer for the input
286</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of byte written if success, or
287 -1 general error
288 -2 if the transcoding fails (for *in is not valid utf8 string or
289 the result of transformation can't fit into the encoding we want), or
290</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncInFunc"></a>xmlCharEncInFunc ()</h3><pre class="programlisting">int xmlCharEncInFunc (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler,
291 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> out,
292 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);</pre><p>
293Generic front-end for the encoding handler input function</p><p>
294
295</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>handler</tt></i> :</span></td><td> char encoding transformation data structure
296</td></tr><tr><td><span class="term"><i><tt>out</tt></i> :</span></td><td> an xmlBuffer for the output.
297</td></tr><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> an xmlBuffer for the input
298</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of byte written if success, or
299 -1 general error
300 -2 if the transcoding fails (for *in is not valid utf8 string or
301 the result of transformation can't fit into the encoding we want), or
302</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncFirstLine"></a>xmlCharEncFirstLine ()</h3><pre class="programlisting">int xmlCharEncFirstLine (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler,
303 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> out,
304 <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);</pre><p>
305Front-end for the encoding handler input function, but handle only
306the very first line, i.e. limit itself to 45 chars.</p><p>
307
308</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>handler</tt></i> :</span></td><td> char enconding transformation data structure
309</td></tr><tr><td><span class="term"><i><tt>out</tt></i> :</span></td><td> an xmlBuffer for the output.
310</td></tr><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> an xmlBuffer for the input
311</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of byte written if success, or
312 -1 general error
313 -2 if the transcoding fails (for *in is not valid utf8 string or
314 the result of transformation can't fit into the encoding we want), or
315</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCharEncCloseFunc"></a>xmlCharEncCloseFunc ()</h3><pre class="programlisting">int xmlCharEncCloseFunc (<a href="libxml-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> *handler);</pre><p>
316Generic front-end for encoding handler close function</p><p>
317
318</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>handler</tt></i> :</span></td><td> char enconding transformation data structure
319</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 if success, or -1 in case of error
320</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="UTF8Toisolat1"></a>UTF8Toisolat1 ()</h3><pre class="programlisting">int UTF8Toisolat1 (unsigned char *out,
Daniel Veillarda41123c2001-04-22 19:31:20 +0000321 int *outlen,
322 unsigned char *in,
Daniel Veillardd4330462003-04-29 12:40:16 +0000323 int *inlen);</pre><p>
324Take a block of UTF-8 chars in and try to convert it to an ISO Latin 1
325block of chars out.</p><p>
326
327</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>out</tt></i> :</span></td><td> a pointer to an array of bytes to store the result
328</td></tr><tr><td><span class="term"><i><tt>outlen</tt></i> :</span></td><td> the length of <i><tt>out</tt></i>
329</td></tr><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> a pointer to an array of UTF-8 chars
330</td></tr><tr><td><span class="term"><i><tt>inlen</tt></i> :</span></td><td> the length of <i><tt>in</tt></i>
331</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 if success, -2 if the transcoding fails, or -1 otherwise
332The value of <i><tt>inlen</tt></i> after return is the number of octets consumed
333 as the return value is positive, else unpredictable.
334The value of <i><tt>outlen</tt></i> after return is the number of ocetes consumed.
335</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="isolat1ToUTF8"></a>isolat1ToUTF8 ()</h3><pre class="programlisting">int isolat1ToUTF8 (unsigned char *out,
Daniel Veillarda41123c2001-04-22 19:31:20 +0000336 int *outlen,
337 unsigned char *in,
Daniel Veillardd4330462003-04-29 12:40:16 +0000338 int *inlen);</pre><p>
339Take a block of ISO Latin 1 chars in and try to convert it to an UTF-8
340block of chars out.</p><p>
341
342</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>out</tt></i> :</span></td><td> a pointer to an array of bytes to store the result
343</td></tr><tr><td><span class="term"><i><tt>outlen</tt></i> :</span></td><td> the length of <i><tt>out</tt></i>
344</td></tr><tr><td><span class="term"><i><tt>in</tt></i> :</span></td><td> a pointer to an array of ISO Latin 1 chars
345</td></tr><tr><td><span class="term"><i><tt>inlen</tt></i> :</span></td><td> the length of <i><tt>in</tt></i>
346</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 if success, or -1 otherwise
347The value of <i><tt>inlen</tt></i> after return is the number of octets consumed
348 as the return value is positive, else unpredictable.
349The value of <i><tt>outlen</tt></i> after return is the number of ocetes consumed.
350</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlGetUTF8Char"></a>xmlGetUTF8Char ()</h3><pre class="programlisting">int xmlGetUTF8Char (unsigned char *utf,
351 int *len);</pre><p>
352Read one UTF8 Char from <i><tt>utf</tt></i></p><p>
353
354</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> a sequence of UTF-8 encoded bytes
355</td></tr><tr><td><span class="term"><i><tt>len</tt></i> :</span></td><td> a pointer to <i><tt>bytes</tt></i> len
356</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the char value or -1 in case of error and update <i><tt>len</tt></i> with the
357 number of bytes used
358</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlCheckUTF8"></a>xmlCheckUTF8 ()</h3><pre class="programlisting">int xmlCheckUTF8 (unsigned char *utf);</pre><p>
359Checks <i><tt>utf</tt></i> for being valid utf-8. <i><tt>utf</tt></i> is assumed to be
Daniel Veillarda41123c2001-04-22 19:31:20 +0000360null-terminated. This function is not super-strict, as it will
361allow longer utf-8 sequences than necessary. Note that Java is
362capable of producing these sequences if provoked. Also note, this
Daniel Veillardcbaf3992001-12-31 16:16:02 +0000363routine checks for the 4-byte maximum size, but does not check for
Daniel Veillardd4330462003-04-29 12:40:16 +00003640x10ffff maximum value.</p><p>
365
366</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> Pointer to putative utf-8 encoded string.
367</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td> true if <i><tt>utf</tt></i> is valid.
368</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlUTF8Strsize"></a>xmlUTF8Strsize ()</h3><pre class="programlisting">int xmlUTF8Strsize (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
369 int len);</pre><p>
370storage size of an UTF8 string</p><p>
371
372</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> a sequence of UTF-8 encoded bytes
373</td></tr><tr><td><span class="term"><i><tt>len</tt></i> :</span></td><td> the number of characters in the array
374</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the storage size of
375the first 'len' characters of ARRAY
376
377</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlUTF8Strndup"></a>xmlUTF8Strndup ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlUTF8Strndup (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
378 int len);</pre><p>
379a strndup for array of UTF8's</p><p>
380
381</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> the input UTF8 *
382</td></tr><tr><td><span class="term"><i><tt>len</tt></i> :</span></td><td> the len of <i><tt>utf</tt></i> (in chars)
383</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>a new UTF8 * or NULL
384</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlUTF8Strpos"></a>xmlUTF8Strpos ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlUTF8Strpos (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
385 int pos);</pre><p>
386a function to provide the equivalent of fetching a
387character from a string array</p><p>
388
389</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> the input UTF8 *
390</td></tr><tr><td><span class="term"><i><tt>pos</tt></i> :</span></td><td> the position of the desired UTF8 char (in chars)
391</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>a pointer to the UTF8 character or NULL
392</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlUTF8Strloc"></a>xmlUTF8Strloc ()</h3><pre class="programlisting">int xmlUTF8Strloc (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
393 const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utfchar);</pre><p>
394a function to provide relative location of a UTF8 char</p><p>
395
396</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> the input UTF8 *
397</td></tr><tr><td><span class="term"><i><tt>utfchar</tt></i> :</span></td><td> the UTF8 character to be found
398</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the relative character position of the desired char
399or -1 if not found
400</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlUTF8Strsub"></a>xmlUTF8Strsub ()</h3><pre class="programlisting"><a href="libxml-tree.html#xmlChar">xmlChar</a>* xmlUTF8Strsub (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf,
Daniel Veillard4ec885a2001-06-17 10:31:07 +0000401 int start,
Daniel Veillardd4330462003-04-29 12:40:16 +0000402 int len);</pre><p>
403Note: positions are given in units of UTF-8 chars</p><p>
404
405</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> a sequence of UTF-8 encoded bytes
406</td></tr><tr><td><span class="term"><i><tt>start</tt></i> :</span></td><td> relative pos of first char
407</td></tr><tr><td><span class="term"><i><tt>len</tt></i> :</span></td><td> total number to copy
408</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>a pointer to a newly created string
409or NULL if any problem
410</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlUTF8Strlen"></a>xmlUTF8Strlen ()</h3><pre class="programlisting">int xmlUTF8Strlen (const <a href="libxml-tree.html#xmlChar">xmlChar</a> *utf);</pre><p>
411compute the length of an UTF8 string, it doesn't do a full UTF8
412checking of the content of the string.</p><p>
413
414</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>utf</tt></i> :</span></td><td> a sequence of UTF-8 encoded bytes
415</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of characters in the string or -1 in case of error
416</td></tr></tbody></table></div></div></div></div><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="libxml-parserInternals.html"><b>&lt;&lt; parserInternals</b></a></td><td align="right"><a accesskey="n" href="libxml-hash.html"><b>hash &gt;&gt;</b></a></td></tr></table></body></html>