sig
  type version = [ `rss2 ]
  type 'a context
  module type Text =
    sig
      type element_context
      val open_element :
        Web__RSS.version ->
        (string -> int -> int -> unit) -> Web__RSS.Text.element_context
      val close_element : Web__RSS.Text.element_context -> unit
      val element_output_substring :
        Web__RSS.Text.element_context -> string -> int -> int -> unit
      val element_output_string :
        Web__RSS.Text.element_context -> string -> unit
    end
  module Description :
    sig
      type description_context
      val open_element :
        version -> (string -> int -> int -> unit) -> description_context
      val close_element : description_context -> unit
      val element_output_substring :
        description_context -> string -> int -> int -> unit
      val element_output_string : description_context -> string -> unit
      val open_element_at :
        [< `channel | `item ] Web__RSS.context ->
        Web__RSS.Description.description_context
      val output_substring :
        [< `channel | `item ] Web__RSS.context ->
        string -> int -> int -> unit
      val output_string :
        [< `channel | `item ] Web__RSS.context -> string -> unit
    end
  module Link :
    sig
      type link_context
      val open_element :
        version -> (string -> int -> int -> unit) -> link_context
      val close_element : link_context -> unit
      val element_output_substring :
        link_context -> string -> int -> int -> unit
      val element_output_string : link_context -> string -> unit
      val open_element_at :
        [< `channel | `item ] Web__RSS.context -> Web__RSS.Link.link_context
      val output_substring :
        [< `channel | `item ] Web__RSS.context ->
        string -> int -> int -> unit
      val output_string :
        [< `channel | `item ] Web__RSS.context -> string -> unit
    end
  module Title :
    sig
      type title_context
      val open_element :
        version -> (string -> int -> int -> unit) -> title_context
      val close_element : title_context -> unit
      val element_output_substring :
        title_context -> string -> int -> int -> unit
      val element_output_string : title_context -> string -> unit
      val open_element_at :
        [< `channel | `item ] Web__RSS.context ->
        Web__RSS.Title.title_context
      val output_substring :
        [< `channel | `item ] Web__RSS.context ->
        string -> int -> int -> unit
      val output_string :
        [< `channel | `item ] Web__RSS.context -> string -> unit
    end
  module Item :
    sig
      type item_context = [ `item ] Web__RSS.context
      val open_element :
        Web__RSS.version ->
        (string -> int -> int -> unit) -> Web__RSS.Item.item_context
      val open_element_at :
        [ `channel ] Web__RSS.context -> Web__RSS.Item.item_context
      val close_element : Web__RSS.Item.item_context -> unit
    end
  module Channel :
    sig
      type channel_context = [ `channel ] Web__RSS.context
      val open_element :
        Web__RSS.version ->
        (string -> int -> int -> unit) -> Web__RSS.Channel.channel_context
      val open_element_at :
        [ `rss ] Web__RSS.context -> Web__RSS.Channel.channel_context
      val close_element : Web__RSS.Channel.channel_context -> unit
    end
  type rss_context = [ `rss ] Web__RSS.context
  val open_element :
    Web__RSS.version ->
    (string -> int -> int -> unit) -> Web__RSS.rss_context
  val close_element : Web__RSS.rss_context -> unit
end