Xml Light DTD
This module provide several functions to create, check, and use DTD to prove Xml documents :
Note about ENTITIES:
While parsing Xml, PCDATA is always parsed and the Xml entities & > < ' " are replaced by their corresponding ASCII characters. For Xml attributes, theses can be put between either double or simple quotes, and the backslash character can be used to escape inner quotes. There is no support for CDATA Xml nodes or PCDATA attributes declarations in DTD, and no support for user-defined entities using the ENTITY DTD element.
include module type of Dtd0type dtd_attr_default = Types.dtd_attr_default = | DTDDefault of string |
| DTDRequired |
| DTDImplied |
| DTDFixed of string |
type dtd_attr_type = Types.dtd_attr_type = | DTDCData |
| DTDNMToken |
| DTDEnum of string list |
| DTDID |
| DTDIDRef |
type dtd_item = Types.dtd_item = | DTDAttribute of string * string * dtd_attr_type * dtd_attr_default |
| DTDElement of string * dtd_element_type |
val parse_file : string ‑> dtdParse the named file into a Dtd data structure. Raise Xml.File_not_found if an error occured while opening the file. Raise Dtd.Parse_error if parsing failed.
val parse_in : Pervasives.in_channel ‑> dtdRead the content of the in_channel and parse it into a Dtd data structure. Raise Dtd.Parse_error if parsing failed.
val parse_string : string ‑> dtdParse the string containing a Dtd document into a Dtd data structure. Raise Dtd.Parse_error if parsing failed.
Check the Dtd data structure declaration and return a checked DTD. Raise Dtd.Check_error if the DTD checking failed.
Prove an Xml document using a checked DTD and an entry point.
The entry point is the first excepted tag of the Xml document,
the returned Xml document has the same structure has the original
one, excepted that non declared optional attributes have been set
to their default value specified in the DTD.
Raise Dtd.Check_errorElementNotDeclared if the entry point
is not found, raise Dtd.Prove_error if the Xml document failed
to be proved with the DTD.
val to_string : dtd_item ‑> stringPrint a DTD element into a string. You can easily get a DTD
document from a DTD data structure using for example
String.concat "\n" (List.map Dtd.to_string) my_dtd
There is three types of DTD excecptions :
Several string conversion functions are provided to enable you to report errors to the user.
exception Parse_error of parse_errorexception Check_error of check_errorexception Prove_error of prove_errorval parse_error : parse_error ‑> stringval check_error : check_error ‑> stringval prove_error : prove_error ‑> string