X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Ftable.ml;fp=src%2Ftable.ml;h=0dbad6a155fbfd1fc98e62e87c4a71623fb043fc;hp=76a88ce56d5524cdd74b9ca15fba36d923ec4cf1;hb=c31dce9d175ad3b9fca57706d6e1f45cd1669d6c;hpb=5a2f69473adac536c778653a9f6c4d1267510945 diff --git a/src/table.ml b/src/table.ml index 76a88ce..0dbad6a 100644 --- a/src/table.ml +++ b/src/table.ml @@ -212,22 +212,9 @@ and eval_star tree ls lr = done; let l = Hashtbl.fold (fun k _ acc -> k::acc) h [] in Tas.sort_of_list tree l - -(*28/01/2014 - parametres : tree l'arbre xml - ls l'ensemble de noeuds - a axis - retour : l'ensemble de noeuds qui correspondent ॆ l'axe -*) +(* List.sort (compare_node tree) l *) -let keep_elements t l = (* - List.filter (fun n -> match Naive_tree.kind t n with - | Element | Text | Document | Attribute -> true | _ -> false) l - *) l -let keep_attributs t l = (* - List.filter (fun n -> match Naive_tree.kind t n with - | Attribute ->true | _ -> false) *) l let rec eval_axis tree ls a = let open Xpath.Ast in @@ -236,11 +223,11 @@ let rec eval_axis tree ls a = | Attribute -> let lfc = eval_move tree ls Firstchild in let lc = eval_star tree lfc [Nextsibling] in - keep_attributs tree lc + lc | Child -> let lfc = eval_move tree ls Firstchild in let lc = eval_star tree lfc [Nextsibling] in - keep_elements tree lc + lc | Descendant c -> let lfc = eval_move tree ls Firstchild in let ls2 = eval_star tree lfc [Firstchild;Nextsibling] in @@ -248,15 +235,15 @@ let rec eval_axis tree ls a = if not c then ls2 else List.merge (compare_node tree) ls2 ls in - keep_elements tree ldes + ldes | FollowingSibling -> let lnexts = eval_move tree ls Nextsibling in let lfs = eval_star tree lnexts [Nextsibling] in - keep_elements tree lfs + lfs | Parent -> let lprevs = eval_star tree ls [Prevsibling] in let lp = eval_move tree lprevs Revfirstchild in - keep_elements tree lp + lp | Ancestor b -> let ls2 = eval_star tree ls [Revfirstchild;Prevsibling] in let ls3 = eval_move tree ls2 Revfirstchild in @@ -264,21 +251,21 @@ let rec eval_axis tree ls a = if not b then ls3 else List.merge (compare_node tree ) ls3 ls in - keep_elements tree lac + lac | PrecedingSibling -> let ls2 = eval_star tree ls [Prevsibling] in let lps = eval_move tree ls2 Prevsibling in - keep_elements tree lps + lps | Preceding -> let ls2 = eval_axis tree ls (Ancestor true) in let ls3 = eval_axis tree ls2 PrecedingSibling in let lp = eval_axis tree ls3 (Descendant true) in - keep_elements tree lp + lp | Following -> let ls2 = eval_axis tree ls (Ancestor true) in let ls3 = eval_axis tree ls2 FollowingSibling in let lf = eval_axis tree ls3 (Descendant true) in - keep_elements tree lf + lf