# Module Ocsigen_extensions.Configuration

    module Configuration: sig .. end

This modules contains types and constructor for the description of XML configurations and the accordingly parsing.

    type element

Specification of a XML element.

    type attribute

Specification of a XML attribute.

    val element : name:string ->
           ?obligatory:bool ->
           ?init:(unit -> unit) ->
           ?elements:element list ->
           ?attributes:attribute list ->
           ?pcdata:(string -> unit) ->
           ?other_elements:(string -> (string * string) list -> Xml.xml list -> unit) ->
           ?other_attributes:(string -> string -> unit) ->
           unit -> element

Create the specification of a XML element.

`name` : Name of the XML tag
`obligatory` : Whether the element is obligatory (`false` by default)
`init` : A function to be executed before processing the child elements and attributes
`elements` : Specifications of the child elements
`pcdata` : Function to be applied on the pcdata (`ignore_blank_pcdata` by default)
`other_elements` : Optional function to be applied on the content of unspecified tags
`other_attributes` : Optional function to be applied on the unspecfied attributes

    val attribute : name:string ->
           ?obligatory:bool ->
           (string -> unit) -> attribute

`attribute ~name f` create a specification of a XML attribute.

`name` : The name of the XML attribute
`obligatory` : Whether the attribute is obligatory (`false` by default)

    val process_element : in_tag:string ->
           elements:element list ->
           ?pcdata:(string -> unit) ->
           ?other_elements:(string -> (string * string) list -> Xml.xml list -> unit) ->
           Xml.xml -> unit

Process an XML element by the specifications.

- Raises `Error_in_config_file` If an element (resp. attribute) occurs which is not specified by the `element` (resp. `attribute`) parameter and no function `other_elements` (resp. other_attributes) is provided

`in_tag` : Name of the enclosing XML tag (just for generating error messages)
`elements` : Specifications of the child elements
`pcdata` : Function to be applied on the PCDATA (`ignore_blank_pcdata` by default)
`other_elements` : Optional function to be applied on unexpected child elements

    val process_elements : in_tag:string ->
           elements:element list ->
           ?pcdata:(string -> unit) ->
           ?other_elements:(string -> (string * string) list -> Xml.xml list -> unit) ->
           ?init:(unit -> unit) -> Xml.xml list -> unit

Application of `process_element` on a list of XML elements.

    val ignore_blank_pcdata : in_tag:string -> string -> unit

The specification for ignoring blank PCDATA ('\n', '\r', ' ', '\t') and failing otherwise (a reasonable default).

    val refuse_pcdata : in_tag:string -> string -> unit