sig
  type 'a t
  external init : unit -> 'CL_DomNode.t = "caml_CL_DomNode_init"
  external delete : 'CL_DomNode.t -> unit = "caml_CL_DomNode_delete"
  external copy : 'CL_DomNode.t -> 'CL_DomNode.t = "caml_CL_DomNode_copy"
  external get_first_child : 'CL_DomNode.t -> 'CL_DomNode.t
    = "caml_CL_DomNode_get_first_child"
  external get_last_child : 'CL_DomNode.t -> 'CL_DomNode.t
    = "caml_CL_DomNode_get_last_child"
  external get_next_sibling : 'CL_DomNode.t -> 'CL_DomNode.t
    = "caml_CL_DomNode_get_next_sibling"
  external get_previous_sibling : 'CL_DomNode.t -> 'CL_DomNode.t
    = "caml_CL_DomNode_get_previous_sibling"
  external get_parent_node : 'CL_DomNode.t -> 'CL_DomNode.t
    = "caml_CL_DomNode_get_parent_node"
  external get_node_name : 'CL_DomNode.t -> string
    = "caml_CL_DomNode_get_node_name"
  external get_node_value : 'CL_DomNode.t -> string
    = "caml_CL_DomNode_get_node_value"
  external get_attributes : 'CL_DomNode.t -> (string * string) list
    = "caml_CL_DomNode_get_attributes"
  module Exceptionless :
    sig
      val get_first_child : 'CL_DomNode.t -> 'CL_DomNode.t option
      val get_last_child : 'CL_DomNode.t -> 'CL_DomNode.t option
      val get_next_sibling : 'CL_DomNode.t -> 'CL_DomNode.t option
      val get_previous_sibling : 'CL_DomNode.t -> 'CL_DomNode.t option
      val get_parent_node : 'CL_DomNode.t -> 'CL_DomNode.t option
    end
  external is_element : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_element" [@@noalloc]
  external is_attr : 'CL_DomNode.t -> bool = "caml_CL_DomNode_is_attr"
    [@@noalloc]
  external is_text : 'CL_DomNode.t -> bool = "caml_CL_DomNode_is_text"
    [@@noalloc]
  external is_cdata_section : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_cdata_section" [@@noalloc]
  external is_entity_reference : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_entity_reference" [@@noalloc]
  external is_entity : 'CL_DomNode.t -> bool = "caml_CL_DomNode_is_entity"
    [@@noalloc]
  external is_processing_instruction : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_processing_instruction" [@@noalloc]
  external is_comment : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_comment" [@@noalloc]
  external is_document : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_document" [@@noalloc]
  external is_document_type : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_document_type" [@@noalloc]
  external is_document_fragment : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_document_fragment" [@@noalloc]
  external is_notation : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_is_notation" [@@noalloc]
  external has_attributes : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_has_attributes" [@@noalloc]
  external has_child_nodes : 'CL_DomNode.t -> bool
    = "caml_CL_DomNode_has_child_nodes" [@@noalloc]
end