Module Cduce_lib_js.Schema_types

type derivation_type = [
| `Extension
| `Restriction
]
type white_space_handling = [
| `Preserve
| `Replace
| `Collapse
]
type facets = {
length : (int * bool) option;
minLength : (int * bool) option;
maxLength : (int * bool) option;
enumeration : value_ref list option;
whiteSpace : white_space_handling * bool;
maxInclusive : (value_ref * bool) option;
maxExclusive : (value_ref * bool) option;
minInclusive : (value_ref * bool) option;
minExclusive : (value_ref * bool) option;
}
and value_ref = Cduce_core.Value.t
and value_constraint = [
| `Fixed of Encodings.Utf8.t * Cduce_core.Value.t
| `Default of Encodings.Utf8.t * Cduce_core.Value.t
]
and type_ref = type_definition Stdlib.Lazy.t
and simple_type_definition = {
st_name : Ns.QName.t option;
st_variety : variety;
st_facets : facets;
st_base : simple_type_definition option;
}
and variety =
| Atomic of simple_type_definition
| List of simple_type_definition
| Union of simple_type_definition list
and attribute_declaration = {
attr_name : Ns.Label.t;
attr_typdef : simple_type_definition;
attr_cstr : value_constraint option;
}
and attribute_use = {
attr_required : bool;
attr_decl : attribute_declaration;
attr_use_cstr : value_constraint option;
}
and term =
| Elt of element_declaration
| Model of model_group
| Wildcard of wildcard
and model_group =
| All of particle list
| Choice of particle list
| Sequence of particle list
and content_type =
| CT_empty
| CT_simple of simple_type_definition
| CT_model of particle * bool
and particle = {
part_min : int;
part_max : int option;
part_term : term;
part_first : Cduce_types.AtomSet.t;
part_nullable : bool;
}
and element_declaration = {
elt_name : Cduce_types.AtomSet.V.t;
elt_typdef : type_ref;
elt_cstr : value_constraint option;
elt_nillable : bool;
}
and complex_type_definition = {
ct_uid : int;
ct_name : Ns.QName.t option;
ct_typdef : type_definition;
ct_deriv : derivation_type;
ct_attrs : attribute_uses;
ct_content : content_type;
}
and attribute_uses = attribute_use list * bool
and type_definition =
| AnyType
| Simple of simple_type_definition
| Complex of complex_type_definition
and wildcard_constraint =
| WAny
| WNot of Ns.Uri.t
| WOne of Ns.Uri.t list
and wildcard = {
wild_cstr : wildcard_constraint;
wild_process : [ `Lax | `Skip | `Strict ];
wild_first : Cduce_types.AtomSet.t;
}
type model_group_definition = {
mg_name : Ns.QName.t;
mg_def : model_group;
}
type attribute_group_definition = {
ag_name : Ns.QName.t;
ag_def : attribute_uses;
}
type schema = {
targetNamespace : Ns.Uri.t;
types : type_definition list;
attributes : attribute_declaration list;
elements : element_declaration list;
attribute_groups : attribute_group_definition list;
model_groups : model_group_definition list;
}
type event =
| E_start_tag of Cduce_types.AtomSet.V.t
| E_end_tag
| E_attribute of Ns.Label.t * Encodings.Utf8.t
| E_char_data of Encodings.Utf8.t