- try
- SetOfStrings.find str !set_of_uri
- with
- Not_found ->
- let uri = Array.of_list (mk_prefixes str) in
- set_of_uri := SetOfStrings.add str uri !set_of_uri ;
- uri
+ let base, xpointer =
+ match Str.split sharp_rex str with
+ | [base] -> base,""
+ | [base; xpointer] -> base,xpointer
+ | _ -> raise (IllFormedUri str)
+ in
+ try
+ SetOfStrings.find str !set_of_uri
+ with
+ Not_found ->
+ let uri = Array.of_list (mk_prefixes base xpointer) in
+ set_of_uri := SetOfStrings.add str uri !set_of_uri ;
+ uri