package xtmpl

  1. Overview
  2. Docs

Regular XML trees

module SMap : Stdlib.Map.S with type key = string

Locations

type pos = {
  1. line : int;
  2. bol : int;
  3. char : int;
  4. file : string option;
}

A position in a source (file, string, ...).

val pos : ?file:string -> line:int -> bol:int -> char:int -> unit -> pos
type loc = {
  1. loc_start : pos;
  2. loc_stop : pos;
}

A location is a range defined by two positions.

val string_of_loc : loc -> string
val loc_sprintf : loc option -> ('a, unit, string) Stdlib.format -> 'a
type 'a with_loc = 'a * loc option
val loc : pos -> pos -> loc

loc loc_start loc_stop creates a loc structure with the given positions.

Errors

type error = loc * string
exception Error of error
val error : loc -> string -> 'a
val string_of_error : (loc * string) -> string

Names

type name = string * string
val string_of_name : (string * string) -> string
val name_of_string : string -> string * string

name_of_string str cuts a name according to first ':' character. If no such character is found, return ("",str).

module Name_ord : Stdlib.Map.OrderedType with type t = name
module Name_map : Stdlib.Map.S with type key = name
module Name_set : Stdlib.Set.S with type elt = name
module SSet : Stdlib.Set.S with type elt = string

XML trees

type cdata = {
  1. loc : loc option;
  2. text : string;
  3. quoted : bool;
}
type comment = {
  1. loc : loc option;
  2. comment : string;
}
type proc_inst = {
  1. loc : loc option;
  2. app : name;
  3. args : string;
}
type 'a attributes = 'a Name_map.t
type str_attributes = string with_loc attributes
type xml_decl = {
  1. loc : loc option;
  2. atts : str_attributes;
}
type doctype = {
  1. loc : loc option;
  2. name : name;
  3. args : string;
}
type node = {
  1. loc : loc option;
  2. name : name;
  3. atts : str_attributes;
  4. subs : tree list;
}
and tree =
  1. | E of node
  2. | D of cdata
  3. | C of comment
  4. | PI of proc_inst
type prolog_misc =
  1. | PC of comment
  2. | PPI of proc_inst
type prolog = {
  1. decl : xml_decl option;
  2. misc : prolog_misc list;
  3. doctype : doctype option;
}
type 'a doc = {
  1. prolog : prolog;
  2. elements : 'a list;
}

Constructors

val node : ?loc:loc -> name -> ?atts:str_attributes -> tree list -> tree
val cdata : ?loc:loc -> ?quoted:bool -> string -> tree
val comment : ?loc:loc -> string -> tree
val prolog_comment : ?loc:loc -> string -> prolog_misc
val pi : ?loc:loc -> name -> string -> tree
val prolog_pi : ?loc:loc -> name -> string -> prolog_misc
val xml_decl : ?loc:loc -> str_attributes -> xml_decl
val doctype : ?loc:loc -> name -> string -> doctype
val prolog : ?decl:xml_decl -> ?doctype:doctype -> prolog_misc list -> prolog
val doc : prolog -> tree list -> tree doc
val merge_cdata : cdata -> cdata -> cdata
val doctype_name : 'a doc -> name option

Input/output

type parse_param = {
  1. ignore_unclosed : bool;
    (*

    auto-close unclosed elements

    *)
  2. self_closing : SSet.t;
    (*

    self-closing elements

    *)
  3. entities : Stdlib.Uchar.t SMap.t;
    (*

    entity references to unescape to utf-8 chars

    *)
}
val default_parse_param : parse_param

Default: no self-closing tags, unescape XML entities (amp, apos,quot, lt, gt). ignore_unclosed: false.

val xml_entities : Stdlib.Uchar.t SMap.t

mapping from XML entities to utf-8 code points

val html_entities : Stdlib.Uchar.t SMap.t

mapping from XML entities to utf-8 code points

mapping from HTML entities to utf-8 code points

val unescape : parse_param -> ?entities:bool -> string -> string

Unescape character references and entity references from parse_param.entities.

  • parameter entities

    can be set to false not to unescape entity references.

val escape : ?quotes:bool -> string -> string

Replace the following characters: < by &lt;, > by &gt;, & by &amp;. Also replace simple and double quotes by &apos; and &quot; if quotes = true (which is false by default).

val from_string : ?param:parse_param -> ?pos_start:pos -> string -> tree list
val from_channel : ?param:parse_param -> ?pos_start:pos -> Stdlib.in_channel -> tree list
val from_file : ?param:parse_param -> string -> tree list
val doc_from_string : ?param:parse_param -> ?pos_start:pos -> string -> tree doc
val doc_from_channel : ?param:parse_param -> ?pos_start:pos -> Stdlib.in_channel -> tree doc
val doc_from_file : ?param:parse_param -> string -> tree doc
val to_string : tree list -> string
val doc_to_string : tree doc -> string

Attributes

val atts_empty : 'a attributes
val atts_of_list : ?atts:'a attributes -> (name * 'a) list -> 'a attributes

Same as Rewrite.atts_of_list but for generic attributes.

val atts_one : ?atts:'a attributes -> name -> 'a -> 'a attributes

Same as Rewrite.atts_one but for generic attributes.

val atts_remove : name -> 'a attributes -> 'a attributes

Same as Rewrite.atts_remove but for generic attributes.

val atts_replace : name -> 'a -> 'a attributes -> 'a attributes

Same as Rewrite.atts_replace but for generic attributes.

val get_att : 'a attributes -> name -> 'a option

Same as Rewrite.get_att but for generic attributes.

val opt_att : str_attributes -> ?def:string -> name -> string * loc option
val string_of_atts : str_attributes -> string

Return a string representation of the given str_attributes.