<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="next" href="XHTML.html"> <link rel="Up" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="XML" rel="Chapter" href="XML.html"> <link title="XHTML" rel="Chapter" href="XHTML.html"><title>XML</title> </head> <body> <div class="navbar"> <a class="up" href="index.html" title="Index">Up</a> <a class="post" href="XHTML.html" title="XHTML">Next</a> </div> <h1>Module <a href="type_XML.html">XML</a></h1> <pre><span class="keyword">module</span> XML: <code class="code">sig</code> <a href="XML.html">..</a> <code class="code">end</code></pre><div class="info module top"> Neither <code class="code">comment</code>, <code class="code">pcdata</code> nor <code class="code">entity</code> check their argument for invalid characters. Unsafe characters will be escaped later by the output routines.<br> </div> <hr width="100%"> <pre><span id="TYPEattrib"><span class="keyword">type</span> <code class="type"></code>attrib</span> </pre> <pre><span id="TYPEaname"><span class="keyword">type</span> <code class="type"></code>aname</span> = <code class="type">string</code> </pre> <pre><span id="VALint_attrib"><span class="keyword">val</span> int_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> int -> <a href="XML.html#TYPEattrib">attrib</a></code></pre> <pre><span id="VALstring_attrib"><span class="keyword">val</span> string_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> string -> <a href="XML.html#TYPEattrib">attrib</a></code></pre> <pre><span id="VALspace_sep_attrib"><span class="keyword">val</span> space_sep_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> string list -> <a href="XML.html#TYPEattrib">attrib</a></code></pre> <pre><span id="VALcomma_sep_attrib"><span class="keyword">val</span> comma_sep_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> string list -> <a href="XML.html#TYPEattrib">attrib</a></code></pre> <pre><span id="VALget_int_attrib"><span class="keyword">val</span> get_int_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> int</code></pre> <pre><span id="VALget_string_attrib"><span class="keyword">val</span> get_string_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> string</code></pre> <pre><span id="VALget_attrib_list"><span class="keyword">val</span> get_attrib_list</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> string list</code></pre> <pre><span id="TYPEelt"><span class="keyword">type</span> <code class="type"></code>elt</span> </pre> <pre><span id="TYPEename"><span class="keyword">type</span> <code class="type"></code>ename</span> = <code class="type">string</code> </pre> <pre><span id="VALempty"><span class="keyword">val</span> empty</span> : <code class="type">unit -> <a href="XML.html#TYPEelt">elt</a></code></pre> <pre><span id="VALcomment"><span class="keyword">val</span> comment</span> : <code class="type">string -> <a href="XML.html#TYPEelt">elt</a></code></pre> <pre><span id="VALpcdata"><span class="keyword">val</span> pcdata</span> : <code class="type">string -> <a href="XML.html#TYPEelt">elt</a></code></pre> <pre><span id="VALentity"><span class="keyword">val</span> entity</span> : <code class="type">string -> <a href="XML.html#TYPEelt">elt</a></code></pre><div class="info "> Neither <code class="code">comment</code>, <code class="code">pcdata</code> nor <code class="code">entity</code> check their argument for invalid characters. Unsafe characters will be escaped later by the output routines.<br> </div> <pre><span id="VALleaf"><span class="keyword">val</span> leaf</span> : <code class="type">?a:<a href="XML.html#TYPEattrib">attrib</a> list -> <a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEelt">elt</a></code></pre> <pre><span id="VALnode"><span class="keyword">val</span> node</span> : <code class="type">?a:<a href="XML.html#TYPEattrib">attrib</a> list -> <a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEelt">elt</a> list -> <a href="XML.html#TYPEelt">elt</a></code></pre><div class="info "> NB: <code class="code">Leaf ("foo", []) -> "<foo />"</code>, but <code class="code">Node ("foo", [], []) -> "<foo></foo>"</code><br> </div> <pre><span id="VALencode_unsafe"><span class="keyword">val</span> encode_unsafe</span> : <code class="type">string -> string</code></pre><div class="info "> The encoder maps strings to HTML and <em>must</em> encode the unsafe characters <code class="code">'<'</code>, <code class="code">'>'</code>, <code class="code">'"'</code>, <code class="code">'&'</code> and the control characters 0-8, 11-12, 14-31, 127 to HTML entities. <code class="code">encode_unsafe</code> is the default for <code class="code">?encode</code> in <code class="code">output</code> and <code class="code">pretty_print</code> below. Other implementations are provided by the module <code class="code">Netencoding</code> in the <a href="http://www.ocaml-programming.de/programming/ocamlnet.html">OcamlNet</a> library, e.g.: <code class="code">let encode = Netencoding.Html.encode ~in_enc:`Enc_iso88591 ~out_enc:`Enc_usascii ()</code>, Where national characters are replaced by HTML entities. The user is of course free to write her own implementation.<br> <b>See also</b> <a href="http://www.ocaml-programming.de/programming/ocamlnet.html">OcamlNet</a><br> </div> <pre><span id="VALencode_unsafe_and_at"><span class="keyword">val</span> encode_unsafe_and_at</span> : <code class="type">string -> string</code></pre><div class="info "> In addition, encode <code class="code">"@"</code> as <code class="code">"&#64;"</code> in the hope that this will fool simple minded email address harvesters.<br> </div> <pre><span id="VALoutput"><span class="keyword">val</span> output</span> : <code class="type">?preformatted:<a href="XML.html#TYPEename">ename</a> list -><br> ?no_break:<a href="XML.html#TYPEename">ename</a> list -><br> ?encode:(string -> string) -> (string -> unit) -> <a href="XML.html#TYPEelt">elt</a> -> unit</code></pre> <pre><span id="VALpretty_print"><span class="keyword">val</span> pretty_print</span> : <code class="type">?width:int -><br> ?preformatted:<a href="XML.html#TYPEename">ename</a> list -><br> ?no_break:<a href="XML.html#TYPEename">ename</a> list -><br> ?encode:(string -> string) -> (string -> unit) -> <a href="XML.html#TYPEelt">elt</a> -> unit</code></pre><div class="info "> Children of elements that are mentioned in <code class="code">no_break</code> do not generate additional line breaks for pretty printing in order not to produce spurious white space. In addition, elements that are mentioned in <code class="code">preformatted</code> are not pretty printed at all, with all white space intact.<br> </div> <pre><span id="VALdecl"><span class="keyword">val</span> decl</span> : <code class="type">?version:string -> ?encoding:string -> (string -> unit) -> unit -> unit</code></pre><div class="info "> <code class="code">encoding</code> is the name of the character encoding, e.g. <code class="code">"US-ASCII"</code><br> </div> <pre><span id="TYPEattribs"><span class="keyword">type</span> <code class="type"></code>attribs</span> = <code class="type"><a href="XML.html#TYPEattrib">attrib</a> list</code> </pre> <pre><span id="VALamap"><span class="keyword">val</span> amap</span> : <code class="type">(<a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a>) -> <a href="XML.html#TYPEelt">elt</a> -> <a href="XML.html#TYPEelt">elt</a></code></pre><div class="info "> Recursively edit attributes for the element and all its children.<br> </div> <pre><span id="VALamap1"><span class="keyword">val</span> amap1</span> : <code class="type">(<a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a>) -> <a href="XML.html#TYPEelt">elt</a> -> <a href="XML.html#TYPEelt">elt</a></code></pre><div class="info "> Edit attributes only for one element.<br> </div> <br> The following can safely be exported by higher level libraries, because removing an attribute from a element is always legal.<br> <pre><span id="VALrm_attrib"><span class="keyword">val</span> rm_attrib</span> : <code class="type">(<a href="XML.html#TYPEaname">aname</a> -> bool) -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALrm_attrib_from_list"><span class="keyword">val</span> rm_attrib_from_list</span> : <code class="type">(<a href="XML.html#TYPEaname">aname</a> -> bool) -> (string -> bool) -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALmap_int_attrib"><span class="keyword">val</span> map_int_attrib</span> : <code class="type">(<a href="XML.html#TYPEaname">aname</a> -> bool) -> (int -> int) -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALmap_string_attrib"><span class="keyword">val</span> map_string_attrib</span> : <code class="type">(<a href="XML.html#TYPEaname">aname</a> -> bool) -> (string -> string) -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALmap_string_attrib_in_list"><span class="keyword">val</span> map_string_attrib_in_list</span> : <code class="type">(<a href="XML.html#TYPEaname">aname</a> -> bool) -> (string -> string) -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre><br> Exporting the following by higher level libraries would drive a hole through a type system, because they allow to add <em>any</em> attribute to <em>any</em> element.<br> <pre><span id="VALadd_int_attrib"><span class="keyword">val</span> add_int_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> int -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALadd_string_attrib"><span class="keyword">val</span> add_string_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> string -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALadd_comma_sep_attrib"><span class="keyword">val</span> add_comma_sep_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> string -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALadd_space_sep_attrib"><span class="keyword">val</span> add_space_sep_attrib</span> : <code class="type"><a href="XML.html#TYPEaname">aname</a> -> string -> <a href="XML.html#TYPEattribs">attribs</a> -> <a href="XML.html#TYPEattribs">attribs</a></code></pre> <pre><span id="VALfold"><span class="keyword">val</span> fold</span> : <code class="type">(unit -> 'a) -><br> (string -> 'a) -><br> (string -> 'a) -><br> (string -> 'a) -><br> (<a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> 'a) -><br> (<a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> 'a list -> 'a) -> <a href="XML.html#TYPEelt">elt</a> -> 'a</code></pre> <pre><span id="VALall_int_attribs"><span class="keyword">val</span> all_int_attribs</span> : <code class="type">?is_elt:(string -> bool) -> string -> <a href="XML.html#TYPEelt">elt</a> -> int list</code></pre> <pre><span id="VALall_string_attribs"><span class="keyword">val</span> all_string_attribs</span> : <code class="type">?is_elt:(string -> bool) -> string -> <a href="XML.html#TYPEelt">elt</a> -> string list</code></pre> <pre><span id="VALall_attribs_list"><span class="keyword">val</span> all_attribs_list</span> : <code class="type">?is_elt:(string -> bool) -> string -> <a href="XML.html#TYPEelt">elt</a> -> string list list</code></pre> <pre><span id="VALall_entities"><span class="keyword">val</span> all_entities</span> : <code class="type"><a href="XML.html#TYPEelt">elt</a> -> string list</code></pre> <pre><span id="VALtranslate"><span class="keyword">val</span> translate</span> : <code class="type">(<a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> <a href="XML.html#TYPEelt">elt</a>) -><br> (<a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> <a href="XML.html#TYPEelt">elt</a> list -> <a href="XML.html#TYPEelt">elt</a>) -><br> ('state -> <a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> <a href="XML.html#TYPEelt">elt</a> list) -><br> ('state -> <a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> <a href="XML.html#TYPEelt">elt</a> list -> <a href="XML.html#TYPEelt">elt</a> list) -><br> (<a href="XML.html#TYPEename">ename</a> -> <a href="XML.html#TYPEattrib">attrib</a> list -> 'state -> 'state) -><br> 'state -> <a href="XML.html#TYPEelt">elt</a> -> <a href="XML.html#TYPEelt">elt</a></code></pre></body></html>