sig
  type node_type =
      T_element of string
    | T_data
    | T_super_root
    | T_pinstr of string
    | T_comment
    | T_none
    | T_attribute of string
    | T_namespace of string
  type data_node_classification =
      CD_normal
    | CD_other
    | CD_empty
    | CD_ignorable
    | CD_error of exn
  class type ['node] extension =
    object ('a)
      method clone : 'a
      method node : 'node
      method set_node : 'node -> unit
    end
  class type ['a] node =
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'Pxp_document.node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'Pxp_document.node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'Pxp_document.node list
      method classify_data_node :
        'Pxp_document.node -> Pxp_document.data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'Pxp_document.node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd ->
        Pxp_document.node_type ->
        (string * string) list -> 'Pxp_document.node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        Pxp_dtd.dtd -> Pxp_document.node_type -> 'Pxp_document.node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'Pxp_document.node list -> unit
      method internal_adopt : 'Pxp_document.node option -> int -> unit
      method internal_delete : 'Pxp_document.node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> Pxp_document.node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('Pxp_document.node -> unit) -> unit
      method iter_nodes_sibl :
        ('Pxp_document.node option ->
         'Pxp_document.node -> 'Pxp_document.node option -> unit) ->
        unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'Pxp_document.node list
      method next_node : 'Pxp_document.node
      method node_path : int list
      method node_position : int
      method node_type : Pxp_document.node_type
      method normprefix : string
      method nth_node : int -> 'Pxp_document.node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'Pxp_document.node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'Pxp_document.node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'Pxp_document.node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'Pxp_document.node list -> unit
      method sub_nodes : 'Pxp_document.node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] data_impl :
    '->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] element_impl :
    '->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] comment_impl :
    '->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] pinstr_impl :
    '->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] super_root_impl :
    '->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] attribute_impl :
    element:string ->
    name:string ->
    Pxp_types.att_value ->
    Pxp_dtd.dtd ->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] namespace_impl :
    string ->
    string ->
    Pxp_dtd.dtd ->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] namespace_element_impl :
    '->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  class ['a] namespace_attribute_impl :
    element:string ->
    name:string ->
    Pxp_types.att_value ->
    Pxp_dtd.dtd ->
    object ('b)
      constraint 'a =
        < clone : 'a; node : 'Pxp_document.node;
          set_node : 'Pxp_document.node -> unit; .. >
      method add_node : ?force:bool -> 'a node -> unit
      method add_pinstr : Pxp_dtd.proc_instruction -> unit
      method append_node : 'a node -> unit
      method attribute : string -> Pxp_types.att_value
      method attribute_names : string list
      method attribute_type : string -> Pxp_types.att_type
      method attributes : (string * Pxp_types.att_value) list
      method attributes_as_nodes : 'a node list
      method classify_data_node : 'a node -> data_node_classification
      method comment : string option
      method complement_attlist : unit -> unit
      method create_data : Pxp_dtd.dtd -> string -> 'a node
      method create_element :
        ?name_pool_for_attribute_values:Pxp_types.pool ->
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int ->
        ?valcheck:bool ->
        ?att_values:(string * Pxp_types.att_value) list ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string * int * int -> Pxp_dtd.dtd -> node_type -> 'a node
      method data : string
      method delete : unit
      method display :
        ?prefixes:string Pxp_types.StringMap.t ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
      method display_prefix : string
      method dtd : Pxp_dtd.dtd
      method dump : Format.formatter -> unit
      method encoding : Pxp_types.rep_encoding
      method entity_id : Pxp_types.entity_id
      method extension : 'a
      method id_attribute_name : string
      method id_attribute_value : string
      method idref_attribute_names : string list
      method insert_nodes : ?pos:int -> 'a node list -> unit
      method internal_adopt : 'a node option -> int -> unit
      method internal_delete : 'a node -> unit
      method internal_init :
        Pxp_types.entity_id ->
        string * int * int ->
        Pxp_types.pool option ->
        bool ->
        Pxp_dtd.dtd ->
        string ->
        (string * string) list -> (string * Pxp_types.att_value) list -> unit
      method internal_init_other :
        Pxp_types.entity_id ->
        string * int * int -> Pxp_dtd.dtd -> node_type -> unit
      method internal_set_pos : int -> unit
      method iter_nodes : ('a node -> unit) -> unit
      method iter_nodes_sibl :
        ('a node option -> 'a node -> 'a node option -> unit) -> unit
      method local_validate :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method localname : string
      method namespace_manager : Pxp_dtd.namespace_manager
      method namespace_scope : Pxp_dtd.namespace_scope
      method namespace_uri : string
      method namespaces_as_nodes : 'a node list
      method next_node : 'a node
      method node_path : int list
      method node_position : int
      method node_type : node_type
      method normprefix : string
      method nth_node : int -> 'a node
      method optional_list_attribute : string -> string list
      method optional_string_attribute : string -> string option
      method orphaned_clone : 'b
      method orphaned_flat_clone : 'b
      method parent : 'a node
      method pinstr : string -> Pxp_dtd.proc_instruction list
      method pinstr_names : string list
      method position : string * int * int
      method previous_node : 'a node
      method quick_set_attributes :
        (string * Pxp_types.att_value) list -> unit
      method remove : unit -> unit
      method remove_nodes : ?pos:int -> ?len:int -> unit -> unit
      method required_list_attribute : string -> string list
      method required_string_attribute : string -> string
      method reset_attribute : string -> unit
      method root : 'a node
      method set_attribute :
        ?force:bool -> string -> Pxp_types.att_value -> unit
      method set_attributes : (string * Pxp_types.att_value) list -> unit
      method set_comment : string option -> unit
      method set_data : string -> unit
      method set_namespace_scope : Pxp_dtd.namespace_scope -> unit
      method set_nodes : 'a node list -> unit
      method sub_nodes : 'a node list
      method validate : unit -> unit
      method validate_attlist : unit -> unit
      method validate_contents :
        ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit
      method write :
        ?prefixes:string list ->
        ?default:string ->
        ?minimization:[ `AllEmpty | `DeclaredEmpty | `None ] ->
        Pxp_types.output_stream -> Pxp_types.encoding -> unit
    end
  val pinstr :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> Pxp_dtd.proc_instruction
  val attribute_name :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> string
  val attribute_value :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> Pxp_types.att_value
  val attribute_string_value :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> string
  val namespace_normprefix :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> string
  val namespace_display_prefix :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> string
  val namespace_uri :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> string
  type 'a spec
    constraint 'a =
      < clone : 'a; node : 'Pxp_document.node;
        set_node : 'Pxp_document.node -> unit; .. >
  val make_spec_from_mapping :
    ?super_root_exemplar:(< clone : 'a; node : 'Pxp_document.node;
                            set_node : 'Pxp_document.node -> unit; .. >
                          as 'a)
                         Pxp_document.node ->
    ?comment_exemplar:'Pxp_document.node ->
    ?default_pinstr_exemplar:'Pxp_document.node ->
    ?pinstr_mapping:(string, 'Pxp_document.node) Hashtbl.t ->
    data_exemplar:'Pxp_document.node ->
    default_element_exemplar:'Pxp_document.node ->
    element_mapping:(string, 'Pxp_document.node) Hashtbl.t ->
    unit -> 'Pxp_document.spec
  val make_spec_from_alist :
    ?super_root_exemplar:(< clone : 'a; node : 'Pxp_document.node;
                            set_node : 'Pxp_document.node -> unit; .. >
                          as 'a)
                         Pxp_document.node ->
    ?comment_exemplar:'Pxp_document.node ->
    ?default_pinstr_exemplar:'Pxp_document.node ->
    ?pinstr_alist:(string * 'Pxp_document.node) list ->
    data_exemplar:'Pxp_document.node ->
    default_element_exemplar:'Pxp_document.node ->
    element_alist:(string * 'Pxp_document.node) list ->
    unit -> 'Pxp_document.spec
  val get_data_exemplar :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> 'Pxp_document.node
  val get_element_exemplar :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec ->
    string -> (string * string) list -> 'Pxp_document.node
  val get_super_root_exemplar :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> 'Pxp_document.node
  val get_comment_exemplar :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> 'Pxp_document.node
  val get_pinstr_exemplar :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> Pxp_dtd.proc_instruction -> 'Pxp_document.node
  val create_data_node :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> Pxp_dtd.dtd -> string -> 'Pxp_document.node
  val create_element_node :
    ?name_pool_for_attribute_values:Pxp_types.pool ->
    ?entity_id:Pxp_types.entity_id ->
    ?position:string * int * int ->
    ?valcheck:bool ->
    ?att_values:(string * Pxp_types.att_value) list ->
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec ->
    Pxp_dtd.dtd -> string -> (string * string) list -> 'Pxp_document.node
  val create_super_root_node :
    ?entity_id:Pxp_types.entity_id ->
    ?position:string * int * int ->
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> Pxp_dtd.dtd -> 'Pxp_document.node
  val create_comment_node :
    ?entity_id:Pxp_types.entity_id ->
    ?position:string * int * int ->
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> Pxp_dtd.dtd -> string -> 'Pxp_document.node
  val create_pinstr_node :
    ?entity_id:Pxp_types.entity_id ->
    ?position:string * int * int ->
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec ->
    Pxp_dtd.dtd -> Pxp_dtd.proc_instruction -> 'Pxp_document.node
  val create_no_node :
    ?entity_id:Pxp_types.entity_id ->
    ?position:string * int * int ->
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.spec -> Pxp_dtd.dtd -> 'Pxp_document.node
  val compare :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> 'Pxp_document.node -> int
  type 'a ord_index
    constraint 'a =
      < clone : 'a; node : 'Pxp_document.node;
        set_node : 'Pxp_document.node -> unit; .. >
  val create_ord_index :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.node -> 'Pxp_document.ord_index
  val ord_number :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.ord_index -> 'Pxp_document.node -> int
  val ord_compare :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     as 'a)
    Pxp_document.ord_.index ->
    Pxp_types.output_stream val ord_number :
    (< clone : 'a; node : 'Pxp_document.node;
       set_node : 'Pxp_document.node -> unit; .. >
     _instruction ->ordsign">'a)
    Pxp_document.ord_index Pxp_types.output_stream ->
   ass="constructor">Pxp_types
.att_value) list -> unit
      method set_comment : string option ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_other :
        ?entity_id:Pxp_types.entity_id ->
        ?position:string      ?name_pool_forattributes : (string * Pxp_types.a n> p;(string * string) list -> 'Pxp_documenpan ="keywordsign"r">Pxp_types.output_stream method set_comment : string option ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_o)^Qonstruc sp;node_type -> (string * strinr>n> p;(string * string) list method set_comment : strin      method set_comment :&nb_id:Pxp_types.entity_id ->
 &nbsaldubxiondefboicnti
 'a node
     tput_stream 'Pxp_documenpan ="keywordsign"r">Pnbsp;&np;node_type -> (string * string) lspan> 'a node
      Pxp_document.node -> unit; .. >
     as 'a)
    d">method
 set_comment : strin      Pxp_dtd.dtd -> string -> 'Pxp_document.node
  e    val create_ord_index :
  &nne : 'bsp;Pxp_document.node -> unit; .. >
     as 'a)
    d">method
 set_comment : strin           Pxp_dtd.dtd 'a node
       string -> 'Pxp_document.node
  e    valp;  Pxp_document.node Pxp_types.a n> p;(string * string) list -> 'Pxp_documenpan ="keywordsign"r">Pxp_types.output_stream method set_comment : string option ->
        Pxp_dtd.dtd -> node_type -> (string * string) list -> 'a node
      method create_o)^Qonstruc sp;node_type -> (string * strinr>n> p;(string * string) list method set_comment : strin      method set_comment :&nb_id:Pxp_types.entity_id ->
 &nbsaldubxiondefboicnti
 'a node
     tput_stream -> ?check_ds="keywordsign">->

 &nbsaldubxiondefboicnti
 'a node
     tput_stream        Pxp_document.node PXP Reference : Intro_preprocessor</tiethod</span> create_o)^Qonstruc sp;node_type <span class="keywordsign">-></span> (string * strinr>n> p;(string * string) list <span class="ke_otherpan classsp;<spap;    <span class="keyword">method</span> set_comment : strin      <span class="keyword">method</span> set_comment :&nb_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keywordsign">-></span><br>  &nbsaldubxiondefboicnti</span> <span class="keywordsign">'</span>a node<br>      tput_stream <span c        ?use_dfa:bool <span class="keywordsign">-></span> ?check_ds="keywordsign">-></span><br>  &nbsaldubxiondefboicnti</span> <span class="keywordsign">'</span>a node<br>      tput_stream <sp node<br>       <span cl</span>a <span class="constructor">Pxp_document</span>.node <span class="keywor_type <span claref="Example_readme.html"><title>PXP Reference : Intro_preprocessor</tiethod</span> create_o)^Qonstruc sp;node_type <span class="keywordsign">-></span> (string * strinr>n> p;(string * string) list <span class="ke_otherpan classsp;<spap;    <span class="keyword">method</span> set_comment : strin      <span class="keywordconstructor">Pxp_document</span>.node <span class="keywor_type <span claref="Example_readme.html"><title>PXP Reference : Intro_preprocessor</tiethod</span> create_o)^Qonstruc sp;node_type <span class="keywordsign">-></span> (string * strinr>n> p;(string * string) list <span class="ke_otherpan classsp;<spap;    <span class="keyword">method</span> set_comment : strin      <span class="keywordconstructor">Pxp_document</span>.node <span class="keywor_type <span claref="Example_readme.html"><title>PXP Reference : Intro_preprocessor</tiethod</span> create_o)^Qonstruc sp;node_type <span class="keywordsign">-></span> (string * strinr>n7 p;(string * string) list <span class="ke_otherpan classsp;<spap;    <span class="keyword">method</span> set_comment : strin      <span class="keywordconstructor">Pxp_document</span>.nt : strin      <span class="keywordconstructor">Pxp_document</span>.node <span class="keyw     ?name_pool_for_attribute_values:<span class="constructor">Pxp_types</span>.pool <span class="keywordsign">-></span><br>     ?entity_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string * int * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_values:(string * <span class="constructor">Pxp_types</span>.att_value) list <span class="keywordsign">-></span><br>     (< clone : <span class="keywordsign">'</span>a; node : <span class="keywordsign">'</span>a <span class="constructor">Pxp_document</span>.node;<br>        set_node : <span class="keywordsign">'</span>a <span class="constructor">Pxp_document</span>.node <span class="keywordsign">-></span> unit; .. ><br>      <span class="keyword">as</span> <span class="keywordsign">'</span>a)<br>     <spanbsp;<span class="keyw     ?name_pool_for_attribute_values:<span class="constructor">Pxp_types</span>.pool <span class="keywordsign">-></span><br>     ?entity_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string * int * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_values:(string * <span class="constructor">Pxp_types</span>.att_value) list <span class="keywordsign">-></span><br>     (< clone : <span class="keywordsign">'</span>a; node&et_node : <span class="keywordsign">'</nbsp; ?entity_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string * int * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_valusp;: ?pos:int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Pxp_document</span>.node list <span class="keywordsign">-></span> unit<br>       <span cla;  ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_vaitle="Pxp_ev_parser" rel="Chapter" href="Pxp_ev_parser.html"> <link title="Pxp_event" rel="Chapter" href="Pxp_evbsp;: <span class="keywordsign">'</nbsp; ?entity_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string * int * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_valusp;: ?pos:int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Pxp_document</span>.node list <span class="keywordsign">-></span> unit<br>       <span cla;  ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_vaitle="Pxp_ev_parser" rel="Chapter" href="Pxp_ev_parser.html"> <link title="Pxp_event" rel="Chapter" href="Pxp_evbsp;: <span class="keywordsign">'</nbsp; ?entity_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string * int * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_valusp;: ?pos:int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Pxp_docreate_no_node :<br>     ?entity_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keywordsign">-></span><br>     ?position:string * int * int <span class="keywordsign">-></span><br>     (< clone : <span class="keywordsign">'</span>a; node&nbbsp; ?valcheck:bool <span class="keywordsign">-></span><br>    rdsign">'</nbsp; ?entity_id:<span class="constructor">Pxp_types</span>.entity_id <span class="keyle="Pxp_event" rel="Chapter" href="Pxp_evbsp;: <span class="keywordsign">'</nbsp; sp;:<br>   &nne : <span class="keywordsign">'bsp;<span cl</span>a <span ceywordsign">-></span> unit<br>       <span cla;  ?valcheck:bool <span class="keyworvbsp;: <span class="keywordsign">'</nbsp; sp;:<br>   &nne :&nb * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_valusp;: ?pos:int <span class="keywordsign">-></span> <span class="xnsooldsign">'</span>a <span class="constructor">Pxp_docreate_no_node :<br>     ?entity_id:<span class="constru * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_valusp;: ?pos:int <span class="keywordsign">-></span> <span class="xnsooldsign">'</span>a <span class="constructor">Pxp_docreate_no_node :<br>     ?entity_id:<span class="constru * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_valusp;: ?pos:int <span class="keywordsign">-></span> <span class="xnsooldsign">'</span>a <span class="constructor">Pxp_docreate_no_node :<br>     ?entity_id:<span class="constru * int <span class="keywordsign">-></span><br>     ?valcheck:bool <span class="keywordsign">-></span><br>     ?att_valusp;: ?pos:int <span clakeywordsign">-></span> <span class="xnsooldsign">'</span>a <span class="co}lnrdsign">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsign">'</span>a <span class="constructor">Pxp_document</span>.node <span class="keywordsign">-></span> unit; .. ><br>      <span class="keyword">as</span> <span class="keywordsign">'</span>a)<br>     <span class="constructor">Pxp_document</span>.spec <span class="keywordsign">-></span><br>     string <span class="keywordsign">-></span> (string * string) list <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Pxp_document</span>.node<br>   <span clp;   ?valcheck:bool <span class="keywordsign">-></span><br>  &nbsan class="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsign">'</span>a <span class="constructor">Pxp_documepes</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string *&nbslass="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8&n;</span><br>         string br>     string <span class="keywordsign">-></span> (string * string) list <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Pxp_document</span>.node<br>   <span clp;   ?valcheck:bool <span class="keywordsign">-></span><br>  &nbsan class="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsign">'</span>a <span class="constructor">Pxp_documepes</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string *&nbslass="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8&n;</span><br>         string br>   &nbyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsi.node<br>   <span clp;   ?valcheck:bool <span class="keywordsign">-></span><br>  &nbsan class="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsign">'</span>a <span class="constructor">Pxp_documepes</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string *&nbslass="bsp;*&nn">'</span>a; node : <span ion:string *&nbslass="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8&n;</span><br>         string br>   &nbyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsi.node<br>   <span clp;   ?valcheck:bool <span class="keywordsign">-></span><br>  &nbsan class="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsign">'</span>a <span class="constructor">Pxp_documepes</span>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string *&nbslass="bsp;*&nn">'</span>a; node : <span ion:string *&nbslass="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8&n;</span><br>         string br>   &nbyword">as</span> <span class="keywordsign">'</span>a)<br>     <span classdsi.node<br>   <span clp;   ?valcheck:bool <span class="keywordsign">-></span><br>  &nbsan class="bsp;*&nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</sp�0���r����A�8`�~N!�8!�a�}ha��8!� N� ;|@8�A�1<��8��8�����x|�8!�N� H���|8!� |fx��8`�|3x|N!p`�@�L#, �@�@;|@8�A�m=��9��9�����x|�8!�N� ;|@8�A�1>@��:R��: �#C����x|�8!�N� H���|8!�|fx&��� 8`���|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@�P;|@;?�A;@�Y=`��k��#x?��;��y�����x|�8!�N� ��x|�8!�N� |�|= x<��8��8!H��,�8!�A��$:� �H���$:�~x�>`��:s��H��9��<��8��| �@� 9�H��t��x|�8!�N� |�|an classdsign">'</span>a <span class="constructor">Pxp_documepes</span>.entity_ispan> <span class="keywordsign">'</span>a)<br>   &n8!H��,�8!�A��$:� �H���$:�~x�>`��:s��H��9��<��8��| �@� 9�H��t��x|�8!�N;</span><br>     string <span class="keywordsign">-></span> :s��H��9��<��8��| �@� 9�H��t��x|�8!�N� |�|an classdpan>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string *&n�|= x<��8��8!H��,�8!�A��$:� �H���$:�~x�>`��:s��H��9��<������A�8`�~N!�8!�a�}ha��8!� N� ;|@8�A�1<��8��8�����x|�8!�N� H���|8!� |fx��8`�|3x|N!p`�@�L#, �@�@;|@8�A�m=��9��9�����x|�8!�N� ;|@8�A�1>@��:R��: �#C����x|�8!�N� H���|8!�|fx&��� 8`���|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@N� H��nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</sp�0���r����A�8`�~N!�8!�a�}ha��8!� N� ;|@8�A�N� ;|@8�A�1<��8��8�����x|�8!�N� H���|8!� |fx��8`�|3x|N!p`�@�L#, �@�@;|@8�A�m=��9ign">'</span>a)<br>     <span classdsi.node<b<��8��| �@� 9�H��t��x|�8!�N;</span><br>     string <span class="keywordsign">-></span> :s��H��9��<��8��| �@� 9�H��t��x|�8!�N� |�|an classdpan>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string *&n�|= x<��8��8!H��,�8!�A��$:� �H���$:�~x�>`��:s��H��9��<������A�8`�~N!�8!�a�}ha��8!� N� ;|@8�A�1<��8��8�����x|�8!�N� H���|8!� |fx��8`�|3x|N!p`�@�L#, �@�@;|@8�A�m=��9��9�����x|�8!�N� ;|@8�A�1>@��:R��: �#C����x|�8!�N� H���|8!�|fx&��� 8`���|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@N� H��nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</sp�0���r����A�8`�~N!�8!�a�}h!�N� ;|@8�A�1>@��:R��: �#C����x|�8!�N� H���|8!�|fx&��� 8`���|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@N� H��nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span class="keyword">as</sp�0���r����A�8`�~N!�8!�a�}h!�N� ;|@8�A�1>@��:R��: �#C����x|�8!�N� H���|8!�|fx&��� 8`���|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@N� H��nn">'</span>a; node : <span class="keywordsign">'</span>a 8 sp;<span class="keywordsign">'</span>a 8    <span class="keyword">as</sp�0���rlass="keywordsign">'</span>a 8&n;</span><br>         string br>   &nbywordn class="constructor">Pxp_document</span>.node<br>   <span clp;   ?valcheck:boo��|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@ode : <span class="keywordsign">'</span>a 8 sp;<span class="keywordsign">'</span>aan>a 8    <span class="keyword">as</sp�0��=`����|�@N� H��nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span clap; string <span class="keywordsign">-></span> :s��H��9��<��8��| �@� 9�H��t��x|�8!�N� |�|an classdpan>.entity_id <span class="keywordsign">-">'</span>a; nod;   ?position:string *&n�|= x<��8��8!H��,�8!�A��$:� �H���$:�~x�>`��:s��H��9��<������A�8`�~N!�8!�a�}ha��8!� N� ;|@8�A�1<��8��8�����x|�8!�N� H���|8!� |fx��8`�|3x|N!p`�@�L#, �@�@;|@8�A�m=��9��9�����x|�8!�N� ;|@8�A�1>@��:R��: �#C����x|�8!�N� H���|8!�|fx&��� 8`���|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@N� H��nn">'</span>a; node : <span class="keywordsign">'</span>a 8    <span clss="keywordsign">-></span> sgt;</span> <span class="constructor">Pxp_types</span>.encoding <span class="keywordsign">->>   &nbywordn class="constructor">Pxp_document</span>.node<br>   <span clp;   ?valcheck:boo��|3x})N!p`�@,�A,�@c��>`��:s��a��H��}��=`����|�@ode : <span class="keywordsign">'</span>a 8 sp;<span