| 1 |
(***********************************************************************)
|
| 2 |
(* The OcamlExpat library *)
|
| 3 |
(* *)
|
| 4 |
(* Copyright 2002, 2003 Maas-Maarten Zeeman. All rights reserved. See *)
|
| 5 |
(* LICENCE for details. *)
|
| 6 |
(***********************************************************************)
|
| 7 |
|
| 8 |
(* $Id: expat.ml,v 1.1 2003/05/31 10:32:42 cvscast Exp $ *)
|
| 9 |
|
| 10 |
type expat_parser
|
| 11 |
|
| 12 |
type xml_error =
|
| 13 |
XML_ERROR_NONE
|
| 14 |
| XML_ERROR_NO_MEMORY
|
| 15 |
| XML_ERROR_SYNTAX
|
| 16 |
| XML_ERROR_NO_ELEMENTS
|
| 17 |
| XML_ERROR_INVALID_TOKEN
|
| 18 |
| XML_ERROR_UNCLOSED_TOKEN
|
| 19 |
| XML_ERROR_PARTIAL_CHAR
|
| 20 |
| XML_ERROR_TAG_MISMATCH
|
| 21 |
| XML_ERROR_DUPLICATE_ATTRIBUTE
|
| 22 |
| XML_ERROR_JUNK_AFTER_DOC_ELEMENT
|
| 23 |
| XML_ERROR_PARAM_ENTITY_REF
|
| 24 |
| XML_ERROR_UNDEFINED_ENTITY
|
| 25 |
| XML_ERROR_RECURSIVE_ENTITY_REF
|
| 26 |
| XML_ERROR_ASYNC_ENTITY
|
| 27 |
| XML_ERROR_BAD_CHAR_REF
|
| 28 |
| XML_ERROR_BINARY_ENTITY_REF
|
| 29 |
| XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
|
| 30 |
| XML_ERROR_MISPLACED_XML_PI
|
| 31 |
| XML_ERROR_UNKNOWN_ENCODING
|
| 32 |
| XML_ERROR_INCORRECT_ENCODING
|
| 33 |
| XML_ERROR_UNCLOSED_CDATA_SECTION
|
| 34 |
| XML_ERROR_EXTERNAL_ENTITY_HANDLING
|
| 35 |
| XML_ERROR_NOT_STANDALONE
|
| 36 |
| XML_ERROR_UNEXPECTED_STATE
|
| 37 |
| XML_ERROR_ENTITY_DECLARED_IN_PE
|
| 38 |
| XML_ERROR_FEATURE_REQUIRES_XML_DTD
|
| 39 |
| XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING
|
| 40 |
|
| 41 |
exception Expat_error of xml_error
|
| 42 |
|
| 43 |
external xml_error_to_string : xml_error -> string = "expat_XML_ErrorString"
|
| 44 |
|
| 45 |
(* exception is currently too minimalistic, but it's a start *)
|
| 46 |
let _ = Callback.register_exception "expat_error"
|
| 47 |
(Expat_error XML_ERROR_NONE)
|
| 48 |
|
| 49 |
external expat_version : unit -> string = "expat_XML_ExpatVersion"
|
| 50 |
|
| 51 |
(* calls to create a parser *)
|
| 52 |
external parser_create : encoding:string -> expat_parser =
|
| 53 |
"expat_XML_ParserCreate"
|
| 54 |
external parser_create_ns : encoding:string -> separator:char -> expat_parser =
|
| 55 |
"expat_XML_ParserCreateNS"
|
| 56 |
|
| 57 |
(* calls needed to parse *)
|
| 58 |
external parse : expat_parser -> string -> unit = "expat_XML_Parse"
|
| 59 |
external parse_sub : expat_parser -> string -> int -> int -> unit = "expat_XML_Parse_sub"
|
| 60 |
external final : expat_parser -> unit = "expat_XML_Final"
|
| 61 |
|
| 62 |
(* start element handler calls *)
|
| 63 |
external set_start_element_handler : expat_parser ->
|
| 64 |
(string -> (string * string) list -> unit) -> unit =
|
| 65 |
"expat_XML_SetStartElementHandler"
|
| 66 |
external reset_start_element_handler : expat_parser -> unit =
|
| 67 |
"expat_XML_ResetStartElementHandler"
|
| 68 |
|
| 69 |
(* end element handler calls *)
|
| 70 |
external set_end_element_handler : expat_parser -> (string -> unit) -> unit =
|
| 71 |
"expat_XML_SetEndElementHandler"
|
| 72 |
external reset_end_element_handler : expat_parser -> unit =
|
| 73 |
"expat_XML_ResetEndElementHandler"
|
| 74 |
|
| 75 |
(* character data handler calls *)
|
| 76 |
external set_character_data_handler : expat_parser -> (string -> unit) -> unit =
|
| 77 |
"expat_XML_SetCharacterDataHandler"
|
| 78 |
external reset_character_data_handler : expat_parser -> unit =
|
| 79 |
"expat_XML_ResetCharacterDataHandler"
|
| 80 |
|
| 81 |
(* processing instruction handler calls *)
|
| 82 |
external set_processing_instruction_handler : expat_parser ->
|
| 83 |
(string -> string -> unit) -> unit =
|
| 84 |
"expat_XML_SetProcessingInstructionHandler"
|
| 85 |
external reset_processing_instruction_handler : expat_parser -> unit =
|
| 86 |
"expat_XML_ResetProcessingInstructionHandler"
|
| 87 |
|
| 88 |
(* comment handler *)
|
| 89 |
external set_comment_handler : expat_parser -> (string -> unit) -> unit =
|
| 90 |
"expat_XML_SetCommentHandler"
|
| 91 |
external reset_comment_handler : expat_parser -> unit =
|
| 92 |
"expat_XML_ResetCommentHandler"
|
| 93 |
|
| 94 |
(* some general parser query calls *)
|
| 95 |
external get_current_byte_index : expat_parser -> int =
|
| 96 |
"expat_XML_GetCurrentByteIndex"
|
| 97 |
external get_current_column_number : expat_parser -> int =
|
| 98 |
"expat_XML_GetCurrentColumnNumber"
|
| 99 |
external get_current_line_number : expat_parser -> int =
|
| 100 |
"expat_XML_GetCurrentLineNumber"
|
| 101 |
external get_current_byte_count : expat_parser -> int =
|
| 102 |
"expat_XML_GetCurrentByteCount"
|
| 103 |
|
| 104 |
|
| 105 |
|