res
| D.T_element "Variable" ->
let name = string_of_attr (n#attribute "name")
- and xid = string_of_attr (n#attribute "id") in
- let typ = (get_content (get_content n))#extension#to_cic_term in
- let res = C.AVariable (xid,ref None,name,typ) in
- register_id xid res ;
- res
+ and xid = string_of_attr (n#attribute "id")
+ and (body, typ) =
+ let sons = n#sub_nodes in
+ match sons with
+ [b ; t] when
+ b#node_type = D.T_element "body" &&
+ t#node_type = D.T_element "type" ->
+ let b' = get_content b
+ and t' = get_content t in
+ (Some (b'#extension#to_cic_term), t'#extension#to_cic_term)
+ | [t] when t#node_type = D.T_element "type" ->
+ let t' = get_content t in
+ (None, t'#extension#to_cic_term)
+ | _ -> raise (IllFormedXml 6)
+ in
+ let res = C.AVariable (xid,ref None,name,body,typ) in
+ register_id xid res ;
+ res
| D.T_element _
- | D.T_data ->
+ | D.T_data
+ | _ ->
raise (IllFormedXml 7)
;;