Module Tyxml_xml

Basic functions for construction and manipulation of XML tree.

include Xml_sigs.Iterable with type uri = string and type event_handler = string and type mouse_event_handler = string and type keyboard_event_handler = string and type touch_event_handler = string
include Xml_sigs.NoWrap with type uri = string with type event_handler = string with type mouse_event_handler = string with type keyboard_event_handler = string with type touch_event_handler = string
module W = Xml_wrap.NoWrap
type 'a wrap = 'a W.t
type 'a list_wrap = 'a W.tlist
type uri = string
val string_of_uri : ( uri, string ) W.ft
val uri_of_string : ( string, uri ) W.ft
type aname = string
type event_handler = string
type mouse_event_handler = string
type keyboard_event_handler = string
type touch_event_handler = string
type attrib
val float_attrib : aname -> float wrap -> attrib
val int_attrib : aname -> int wrap -> attrib
val string_attrib : aname -> string wrap -> attrib
val space_sep_attrib : aname -> string list wrap -> attrib
val comma_sep_attrib : aname -> string list wrap -> attrib
val event_handler_attrib : aname -> event_handler -> attrib
val mouse_event_handler_attrib : aname -> mouse_event_handler -> attrib
val keyboard_event_handler_attrib : aname -> keyboard_event_handler -> attrib
val touch_event_handler_attrib : aname -> touch_event_handler -> attrib
val uri_attrib : aname -> uri wrap -> attrib
val uris_attrib : aname -> uri list wrap -> attrib
type elt
type ename = string
val empty : unit -> elt
val comment : string -> elt
val pcdata : string wrap -> elt
val encodedpcdata : string wrap -> elt
val entity : string -> elt
val leaf : ?a:attrib list -> ename -> elt
val node : ?a:attrib list -> ename -> elt list_wrap -> elt
val cdata : string -> elt
val cdata_script : string -> elt
val cdata_style : string -> elt
type separator =
| Space
| Comma
val aname : attrib -> aname
type acontent = private
| AFloat of float
| AInt of int
| AStr of string
| AStrL of separator * string list
val acontent : attrib -> acontent
type econtent = private
| Empty
| Comment of string
| EncodedPCDATA of string
| PCDATA of string
| Entity of string
| Leaf of ename * attrib list
| Node of ename * attrib list * elt list
val content : elt -> econtent
include Xml_sigs.Pp with type elt := elt
val pp : ?encode:( string -> string ) -> ?indent:bool -> unit -> Stdlib.Format.formatter -> elt -> unit

pp () is a Format printer for untyped XML.

It can be used in combination with "%a". For example, to get a string:

let s = Format.asprintf "%a" (pp ()) my_xml

A custom encoding function can be provided with the ~encode argument. Various implementations of encode are available in Xml_print.

Import/Export

val of_seq : Xml_stream.signal Stdlib.Seq.t -> elt list

Iterators

val amap : ( ename -> attrib list -> attrib list ) -> elt -> elt

Recursively edit attributes for the element and all its children.

val amap1 : ( ename -> attrib list -> attrib list ) -> elt -> elt

Edit attributes only for one element.

The following can safely be exported by higher level libraries, because removing an attribute from a element is always legal.

val rm_attrib : ( aname -> bool ) -> attrib list -> attrib list
val rm_attrib_from_list : ( aname -> bool ) -> ( string -> bool ) -> attrib list -> attrib list
val map_int_attrib : ( aname -> bool ) -> ( int -> int ) -> attrib list -> attrib list
val map_string_attrib : ( aname -> bool ) -> ( string -> string ) -> attrib list -> attrib list
val map_string_attrib_in_list : ( aname -> bool ) -> ( string -> string ) -> attrib list -> attrib list

Exporting the following by higher level libraries would drive a hole through a type system, because they allow to add any attribute to any element.

val add_int_attrib : aname -> int -> attrib list -> attrib list
val add_string_attrib : aname -> string -> attrib list -> attrib list
val add_comma_sep_attrib : aname -> string -> attrib list -> attrib list
val add_space_sep_attrib : aname -> string -> attrib list -> attrib list
val fold : ( unit -> 'a ) -> ( string -> 'a ) -> ( string -> 'a ) -> ( string -> 'a ) -> ( string -> 'a ) -> ( ename -> attrib list -> 'a ) -> ( ename -> attrib list -> 'a list -> 'a ) -> elt -> 'a
val all_entities : elt -> string list
val translate : ( ename -> attrib list -> elt ) -> ( ename -> attrib list -> elt list -> elt ) -> ( 'state -> ename -> attrib list -> elt list ) -> ( 'state -> ename -> attrib list -> elt list -> elt list ) -> ( ename -> attrib list -> 'state -> 'state ) -> 'state -> elt -> elt

Deprecated printers

val print_list : output:( string -> unit ) -> ?encode:( string -> string ) -> elt list -> unit
val print : Stdlib.Format.formatter -> elt -> unit