Release 1.2.0:
- upgrade to Ppxlib 0.37.0

Release 1.1.0 (2025/06/23):
- upgrade to js_of_ocaml 6.0.1
- fix: Xtmpl.Rewrite.doc_to_string ~xml_atts:false now prints a whole doc, not
  only elements.
- Types.S.text_of_range has new optional parameters inc_start (default true)
  and inc_stop (default false)
- ignore attributes with invalid names (issue a warning)
- fix handling of unclosed elements when ignoring them

Release 1.0.0:
- parsing of XML:
    - accept lowercase <!doctype, <!DOCTYPE or a mix of lowercase and uppercase
    - accept attributes with no value (issue a warning)
- refactoring to use functors to create tree and documents, depending
  on representation of attributes
  This leads to some API Changes (mostly things moving from
  modules Xml or Rewrite to module Types)
- provide mappers to map between trees of different types

Release 0.19.0:
- use dune to build
- modules renamed, with namespace Xtmpl and submodules Rewrite, Xml, ...
- packages renamed: xtmpl.ppx -> xtmpl_ppx, xtmpl.js -> xtmpl_js
- add ignore_unclosed to parse_param to authorize more parsing
  with tags not closed (default is false).
- names in parse_param.self_closing are now lowercase_ascii'ed
  before comparison

Realse 0.18.0:
- upgrade to OCaml 4.12.0
- reference entities to unescape when parsing can be specified
  in the ?param parameter. HTML entities are available with
  Xtmpl_xml.html_entities;
- functions reading xml take a set of unqualified tag names
  considered as selfclosing; this is useful to parse HTML

Release 0.17.0:
- use js_of_ocaml.ppx instead of camlp4 extension
- use -g flag everywhere
- environments now handle and resolve namespaces
  (except default namespaces)
- depend on ocaml-iri

Release 0.16.0:
- move to uutf 1.0.0

Release 0.15.0:
- use Re library rather than Str (in Xtmpl_rewrite) and
  Jsoo's Regexp (in Xtmpl_js) to simplify code
- Xtmpl_js.dom_of_html: add optional ?doc parameter to specify
  the root document (default is Dom_html.document)
- Fix generated types from templates

Release 0.14.0:
- fix: remove special attributes when converting Xtmpl_rewrite.tree
  to Xtmpl_xml.tree
- upgrade to ocaml 4.03.0 + replace deprecated stdlib functions

Release 0.13.0:
- include own XML parser, keeping locations (do not depend on Xmlm any more,
  but now requires sedlex and uutf packages)
- big interface change (with modules Xtmpl_xml, Xtmpl_rewrite, ...)
- new package xtmpl.ppx (ppx instruction for ocamlfind not included in xtmpl
  package any more)
- no main_ tag any more

Release 0.12:
- fix Xtmpl_js.Dom_of_xtmpl to unescape xml in attributes, using
  Regexp module of Js_of_ocaml

Release 0.11:
- add ppx_xtmpl: this preprocessor creates functions from template
  files or strings, with the parameters described in the template.
  Usage: let doc = [%xtmpl "file.xml"]
         let doc = [%xtmpl.string {| <div>...</div> |} ]
- some functions renamed (deprecating original ones functions)
- add Xtmpl.node, Xtmpl.cdata
- new Xtmpl_xhtml module, with convenient functions to create Xhtml trees
- new package Xtmpl.js, with a Xtmpl_js module

Release 0.10:
  - use safe-string mode
  - new parameter ~xml_atts for Xtmpl.string_of_{xml,xmls,xml_atts}
    to indicate whether or not to keep valid XML in attributes when
    printing an XML tree. Default is true, to be backward-compatible.
    When it is true, Xtmpl tries to unescape some entities. Only
    lt, gt, amp, quot and apos named entities are unescaped.
    When an entity is given by its character code, only the ones
    with code between 0 and 255 are unescaped.

Release 0.9:
  - Add Xtmpl.merge_cdata
  - Add Xtmpl.merge_cdata_list

Release 0.8:
  - API change: attributes are now associated to xml tree list instead
    of string, for performance reason
  - new "protect_" attribute, to remove from environment the rules
    in this attribute. For example: <foo protect_="title,id" ...>...</foo>
    will prevent applying <title> and <id> rules in the node's children.
  - the rewrite is now done as a fold, taking a data in parameter and
    returning it.
  - defer_ attribute is now handled only for nodes having a
    matching rule in the environment.

Release 0.7:
  - re-introduce (un)escaping ampersands in attributes, when
    the attribute name is specified in attribute escamp_

Release 0.6:
  - do not (un)escape ampersand in attributes
  - fix META version
  - generate and install .cmxs file

Release 0.5:
  - mod: do not use string representation to check for changes in
    fixpoint computation
  - API change: Xtmpl.E of tag * atts * subs
  - API change: No more Xtmpl.T constructor
  - API change: make API more homogeneous
  - API change: handle prefix in nodes and attributes

Release 0.4:
  - add: string_of_xmls

Release 0.3 (2012/08/30):
  * mod: "empty" env now contains the main_ tag remover
  * fix: all eval functions now remove the main_ tag (because
    all env now contains the binding to do so by default)

Release 0.2 (2012/08/28):

	* mod: env_of_list now fills the environment from left to right
	* add: new exception No_change for callbacks to indicate no change

