Implement the multiple-starters feature:
authorKim Nguyễn <kn@lri.fr>
Tue, 23 Jul 2013 17:06:50 +0000 (19:06 +0200)
committerKim Nguyễn <kn@lri.fr>
Wed, 24 Jul 2013 09:39:12 +0000 (11:39 +0200)
- implement automata merging and concatenation
- change the command line parsing to allow multiple queries
- update the output format to denote which query a result set belongs to
- implement full evaluation of automata (associate each selecting state
with its result set)

Given queries Q1 ... QN on the command line, we can now:
- compute Q1, then Q2, ... , then QN on the same document, sequentially
- build one automaton that computes Q1, ..., QN in parallel
- compute QN(... Q2(Q1(root))) sequentially (materializing intermediate
results)
- build one automaton that computes QN(...(Q2(Q1(root)))) in one run.

85 files changed:
src/ata.ml
src/ata.mli
src/options.ml
src/run.ml
src/run.mli
src/tatoo.ml
src/xpath/compile.ml
tests/alphabet.xml.results/A10_jaxp.xml
tests/alphabet.xml.results/A11_jaxp.xml
tests/alphabet.xml.results/A12_jaxp.xml
tests/alphabet.xml.results/A1_jaxp.xml
tests/alphabet.xml.results/A2_jaxp.xml
tests/alphabet.xml.results/A3_jaxp.xml
tests/alphabet.xml.results/A4_jaxp.xml
tests/alphabet.xml.results/A5_jaxp.xml
tests/alphabet.xml.results/A6_jaxp.xml
tests/alphabet.xml.results/A7_jaxp.xml
tests/alphabet.xml.results/A8_jaxp.xml
tests/alphabet.xml.results/A9_jaxp.xml
tests/alphabet.xml.results/O1_jaxp.xml
tests/alphabet.xml.results/O2_jaxp.xml
tests/alphabet.xml.results/O3_jaxp.xml
tests/alphabet.xml.results/O4_jaxp.xml
tests/alphabet.xml.results/P10_jaxp.xml
tests/alphabet.xml.results/P11_jaxp.xml
tests/alphabet.xml.results/P12_jaxp.xml
tests/alphabet.xml.results/P1_jaxp.xml
tests/alphabet.xml.results/P2_jaxp.xml
tests/alphabet.xml.results/P3_jaxp.xml
tests/alphabet.xml.results/P4_jaxp.xml
tests/alphabet.xml.results/P5_jaxp.xml
tests/alphabet.xml.results/P6_jaxp.xml
tests/alphabet.xml.results/P7_jaxp.xml
tests/alphabet.xml.results/P8_jaxp.xml
tests/alphabet.xml.results/P9_jaxp.xml
tests/alphabet.xml.results/T1_jaxp.xml
tests/alphabet.xml.results/T2_jaxp.xml
tests/alphabet.xml.results/T3_jaxp.xml
tests/alphabet.xml.results/T4_jaxp.xml
tests/alphabet.xml.results/T5_jaxp.xml
tests/alphabet.xml.results/T6_jaxp.xml
tests/alphabet.xml.results/T7_jaxp.xml
tests/comments00.xml.results/C0_jaxp.xml
tests/xmark_small.xml.results/A1_jaxp.xml
tests/xmark_small.xml.results/A2_jaxp.xml
tests/xmark_small.xml.results/A3_jaxp.xml
tests/xmark_small.xml.results/A4_jaxp.xml
tests/xmark_small.xml.results/A5_jaxp.xml
tests/xmark_small.xml.results/A6_jaxp.xml
tests/xmark_small.xml.results/A7_jaxp.xml
tests/xmark_small.xml.results/A8_jaxp.xml
tests/xmark_small.xml.results/B10_jaxp.xml
tests/xmark_small.xml.results/B11_jaxp.xml
tests/xmark_small.xml.results/B12_jaxp.xml
tests/xmark_small.xml.results/B13_jaxp.xml
tests/xmark_small.xml.results/B1_jaxp.xml
tests/xmark_small.xml.results/B2_jaxp.xml
tests/xmark_small.xml.results/B3_jaxp.xml
tests/xmark_small.xml.results/B4_jaxp.xml
tests/xmark_small.xml.results/B5_jaxp.xml
tests/xmark_small.xml.results/B6_jaxp.xml
tests/xmark_small.xml.results/B7_jaxp.xml
tests/xmark_small.xml.results/B8_jaxp.xml
tests/xmark_small.xml.results/B9_jaxp.xml
tests/xmark_tiny.xml.results/A1_jaxp.xml
tests/xmark_tiny.xml.results/A2_jaxp.xml
tests/xmark_tiny.xml.results/A3_jaxp.xml
tests/xmark_tiny.xml.results/A4_jaxp.xml
tests/xmark_tiny.xml.results/A5_jaxp.xml
tests/xmark_tiny.xml.results/A6_jaxp.xml
tests/xmark_tiny.xml.results/A7_jaxp.xml
tests/xmark_tiny.xml.results/A8_jaxp.xml
tests/xmark_tiny.xml.results/B10_jaxp.xml
tests/xmark_tiny.xml.results/B11_jaxp.xml
tests/xmark_tiny.xml.results/B12_jaxp.xml
tests/xmark_tiny.xml.results/B13_jaxp.xml
tests/xmark_tiny.xml.results/B1_jaxp.xml
tests/xmark_tiny.xml.results/B2_jaxp.xml
tests/xmark_tiny.xml.results/B3_jaxp.xml
tests/xmark_tiny.xml.results/B4_jaxp.xml
tests/xmark_tiny.xml.results/B5_jaxp.xml
tests/xmark_tiny.xml.results/B6_jaxp.xml
tests/xmark_tiny.xml.results/B7_jaxp.xml
tests/xmark_tiny.xml.results/B8_jaxp.xml
tests/xmark_tiny.xml.results/B9_jaxp.xml

index 70213fd..add2775 100644 (file)
@@ -116,13 +116,23 @@ struct
 
 end
 
-module Transition = Hcons.Make (struct
+module Transition =
+  struct
+    include Hcons.Make (struct
   type t = State.t * QNameSet.t * Formula.t
   let equal (a, b, c) (d, e, f) =
     a == d && b == e && c == f
   let hash (a, b, c) =
     HASHINT4 (PRIME1, a, ((QNameSet.uid b) :> int), ((Formula.uid c) :> int))
 end)
+    let print ppf t =
+      let q, l, f = t.node in
+      fprintf ppf "%a, %a %s %a"
+        State.print q
+        QNameSet.print l
+        Pretty.double_right_arrow
+        Formula.print f
+  end
 
 
 module TransList : sig
@@ -147,24 +157,12 @@ type t = {
   transitions: (State.t, (QNameSet.t*Formula.t) list) Hashtbl.t;
 }
 
-
+let uid t = t.id
 
 let get_states a = a.states
 let get_starting_states a = a.starting_states
 let get_selecting_states a = a.selecting_states
 
-let get_trans a tag states =
-  StateSet.fold (fun q acc0 ->
-    try
-      let trs = Hashtbl.find a.transitions q in
-      List.fold_left (fun acc1 (labs, phi) ->
-           if QNameSet.mem tag labs then
-             TransList.cons (Transition.make (q, labs, phi)) acc1
-           else acc1) acc0 trs
-    with Not_found -> acc0
-  ) states TransList.nil
-
-
 
 let _pr_buff = Buffer.create 50
 let _str_fmt = formatter_of_buffer _pr_buff
@@ -173,6 +171,7 @@ let _flush_str_fmt () = pp_print_flush _str_fmt ();
   Buffer.clear _pr_buff; s
 
 let print fmt a =
+  let _ = _flush_str_fmt() in
   fprintf fmt
     "Internal UID: %i@\n\
      States: %a@\n\
@@ -215,6 +214,21 @@ let print fmt a =
   ) strs_strings;
   fprintf fmt "%s@\n" line
 
+
+let get_trans a tag states =
+  StateSet.fold (fun q acc0 ->
+    try
+      let trs = Hashtbl.find a.transitions q in
+      List.fold_left (fun acc1 (labs, phi) ->
+        if QNameSet.mem tag labs then
+          TransList.cons (Transition.make (q, labs, phi)) acc1
+        else acc1) acc0 trs
+    with Not_found -> acc0
+  ) states TransList.nil
+
+
+
+
 (*
   [complete transitions a] ensures that for each state q
   and each symbols s in the alphabet, a transition q, s exists.
@@ -444,16 +458,30 @@ let concat a1 a2 =
   let link_phi =
     StateSet.fold
       (fun q phi -> Formula.(or_ (stay q) phi))
-      a1.selecting_states Formula.true_
+      a1.selecting_states Formula.false_
   in
+  Hashtbl.iter (fun q trs -> Hashtbl.add a1.transitions q trs)
+    a2.transitions;
   StateSet.iter
     (fun q ->
-      Hashtbl.add a1.transitions q [(QNameSet.any, link_phi)])
+      Hashtbl.replace a1.transitions q [(QNameSet.any, link_phi)])
     a2.starting_states;
-  Hashtbl.iter (fun q trs -> Hashtbl.add a1.transitions q trs)
-    a2.transitions;
   { a1 with
     states = StateSet.union a1.states a2.states;
     selecting_states = a2.selecting_states;
     transitions = a1.transitions;
   }
+
+let merge a1 a2 =
+  let a1 = copy a1 in
+  let a2 = copy a2 in
+  { a1 with
+    states = StateSet.union a1.states a2.states;
+    selecting_states = StateSet.union a1.selecting_states a2.selecting_states;
+    starting_states = StateSet.union a1.starting_states a2.starting_states;
+    transitions =
+      let () =
+        Hashtbl.iter (fun k v -> Hashtbl.add a1.transitions k v) a2.transitions
+      in
+      a1.transitions
+  }
index 6b4c02a..eada8d0 100644 (file)
@@ -68,7 +68,10 @@ module Formula :
   end
 (** Modules representing the Boolean formulae used in transitions *)
 
-module Transition : Hcons.S with type data = State.t * QNameSet.t * Formula.t
+module Transition : sig
+  include Hcons.S with type data = State.t * QNameSet.t * Formula.t
+  val print : Format.formatter -> t -> unit
+end
 (** A [Transition.t] is a hashconsed triple of the state, the set of labels and the formula *)
 
 
@@ -82,6 +85,9 @@ end
 type t
 (** 2-way Selecting Alternating Tree Automata *)
 
+val uid : t -> Uid.t
+(** return the internal unique ID of the automaton *)
+
 val get_states : t -> StateSet.t
 (** return the set of states of the automaton *)
 
@@ -110,6 +116,11 @@ val concat : t -> t -> t
     nodes [N], [a'' N = a' (a N)].
 *)
 
+val merge : t -> t -> t
+(** [merge a a'] creates a new automaton [a''] that evaluates both [a] and [a'']
+    in parallel
+*)
+
 module Builder :
 sig
   type auto = t
index 70c2b4d..3c2239a 100644 (file)
@@ -3,8 +3,10 @@ open Arg
 let count = ref false
 let input_file : string option ref = ref None
 let output_file : string option ref = ref None
-let query = ref ""
+let queries = ref []
 let stats = ref false
+let compose = ref false
+let parallel = ref false
 
 let set_string_option r s = r := Some s
 
@@ -17,12 +19,20 @@ let specs = align [
   "--doc", String (set_string_option input_file), " ";
   "-o", String (set_string_option output_file), " specify the output file [default stdout]";
   "--out", String (set_string_option output_file), " ";
+  "-C", Set compose, " compose queries: each query is applied to the results of the previous one [default run all queries
+from the root node]";
+  "--compose", Set compose, " ";
+  "-p", Set parallel, " run all queries in parallel [default run all queries sequentially]";
+  "--parallel", Set parallel, " ";
 ]
 
-let usage_msg = Printf.sprintf "usage: %s [options] query" Sys.argv.(0)
+let usage_msg = Printf.sprintf "usage: %s [options] query [query ... query]" Sys.argv.(0)
 
 let usage () = usage specs usage_msg
 
 let parse () =
-  parse specs (fun q -> query := q) usage_msg
+  parse specs (fun q -> queries := q :: !queries ) usage_msg;
+  match !queries with
+    [] -> raise (Arg.Bad "missing query")
+  | l -> queries := List.rev l
 
index d7d5177..cb2ea3b 100644 (file)
@@ -222,6 +222,38 @@ END
          loop phi
 
 
+   let eval_trans_aux cache4 fcs nss ps ss old_config =
+     let { sat = old_sat;
+           unsat = old_unsat;
+           todo = old_todo;
+           summary = old_summary } = old_config.NodeStatus.node
+     in
+     let sat, unsat, removed, kept, todo =
+       Ata.TransList.fold
+         (fun trs acc ->
+           let q, lab, phi = Ata.Transition.node trs in
+           let a_sat, a_unsat, a_rem, a_kept, a_todo = acc in
+           if StateSet.mem q a_sat || StateSet.mem q a_unsat then acc else
+             let new_phi =
+               eval_form phi fcs nss ps old_config old_summary
+             in
+             if Ata.Formula.is_true new_phi then
+               StateSet.add q a_sat, a_unsat, StateSet.add q a_rem, a_kept, a_todo
+             else if Ata.Formula.is_false new_phi then
+               a_sat, StateSet.add q a_unsat, StateSet.add q a_rem, a_kept, a_todo
+             else
+               let new_tr = Ata.Transition.make (q, lab, new_phi) in
+               (a_sat, a_unsat, a_rem, StateSet.add q a_kept, (Ata.TransList.cons new_tr a_todo))
+         ) old_todo (old_sat, old_unsat, StateSet.empty, StateSet.empty, Ata.TransList.nil)
+     in
+           (* States that have been removed from the todo list and not kept are now
+              unsatisfiable *)
+     let unsat = StateSet.union unsat (StateSet.diff removed kept) in
+           (* States that were found once to be satisfiable remain so *)
+     let unsat = StateSet.diff unsat sat in
+     let new_config = NodeStatus.make { old_config.NodeStatus.node with sat; unsat; todo; } in
+     new_config
+
 
    let eval_trans cache4 fcs nss ps ss =
      let fcsid = (fcs.NodeStatus.id :> int) in
@@ -233,35 +265,9 @@ END
          let res = Cache.N4.find cache4 oid fcsid nssid psid in
          if res != dummy_status then res
          else
-           let { sat = old_sat;
-                 unsat = old_unsat;
-                 todo = old_todo;
-                 summary = old_summary } = old_config.NodeStatus.node
+           let new_config = 
+             eval_trans_aux cache4 fcs nss ps ss old_config
            in
-           let sat, unsat, removed, kept, todo =
-             Ata.TransList.fold
-               (fun trs acc ->
-                 let q, lab, phi = Ata.Transition.node trs in
-                 let a_sat, a_unsat, a_rem, a_kept, a_todo = acc in
-                 if StateSet.mem q a_sat || StateSet.mem q a_unsat then acc else
-                   let new_phi =
-                     eval_form phi fcs nss ps old_config old_summary
-                   in
-                   if Ata.Formula.is_true new_phi then
-                     StateSet.add q a_sat, a_unsat, StateSet.add q a_rem, a_kept, a_todo
-                   else if Ata.Formula.is_false new_phi then
-                     a_sat, StateSet.add q a_unsat, StateSet.add q a_rem, a_kept, a_todo
-                   else
-                     let new_tr = Ata.Transition.make (q, lab, new_phi) in
-                     (a_sat, a_unsat, a_rem, StateSet.add q a_kept, (Ata.TransList.cons new_tr a_todo))
-               ) old_todo (old_sat, old_unsat, StateSet.empty, StateSet.empty, Ata.TransList.nil)
-           in
-        (* States that have been removed from the todo list and not kept are now
-           unsatisfiable *)
-           let unsat = StateSet.union unsat (StateSet.diff removed kept) in
-        (* States that were found once to be satisfiable remain so *)
-           let unsat = StateSet.diff unsat sat in
-           let new_config = NodeStatus.make { old_config.NodeStatus.node with sat; unsat; todo; } in
            Cache.N4.add cache4 oid fcsid nssid psid new_config;
            new_config
        in
@@ -294,10 +300,11 @@ END
           let c = unsafe_get_status status node_id in
           if c == dummy_status then
             (* first time we visit the node *)
+            let ltrs = get_trans cache2 auto tag (Ata.get_states auto) in
             NodeStatus.make
               { sat = StateSet.empty;
                 unsat = Ata.get_starting_states auto;
-                todo = get_trans cache2 auto tag (Ata.get_states auto);
+                todo = ltrs;
                 summary = NodeSummary.make
                   (node == T.first_child tree parent) (* is_left *)
                   (node == T.next_sibling tree parent) (* is_right *)
@@ -416,6 +423,35 @@ END
     in
     loop (T.root tree) []
 
+
+  let get_full_results run =
+    let cache = run.status in
+    let auto = run.auto in
+    let tree = run.tree in
+    let res_mapper = Hashtbl.create MED_H_SIZE in
+    let () =
+      StateSet.iter
+        (fun q -> Hashtbl.add res_mapper q [])
+        (Ata.get_selecting_states auto)
+    in
+    let rec loop node =
+      if node != T.nil then
+        let () = loop (T.next_sibling tree node) in
+        let () = loop (T.first_child tree node) in
+        StateSet.iter
+          (fun q ->
+            try
+              let acc = Hashtbl.find res_mapper q in
+              Hashtbl.replace res_mapper q (node::acc)
+            with
+              Not_found -> ())
+          cache.(T.preorder tree node).NodeStatus.node.sat
+    in
+    loop (T.root tree);
+    StateSet.fold
+      (fun q acc -> (q, Hashtbl.find res_mapper q)::acc)
+      (Ata.get_selecting_states auto) []
+
   let prepare_run run list =
     let tree = run.tree in
     let auto = run.auto in
@@ -444,12 +480,24 @@ END
       status.(node_id) <- status0) list
 
 
-
-  let eval auto tree nodes =
+  let eval full auto tree nodes =
     let run = make auto tree in
     prepare_run run nodes;
     while run.redo do
-      top_down run;
+      top_down run
     done;
-    get_results run
+    if full then `Full (get_full_results run)
+    else `Normal (get_results run)
+
+
+  let full_eval auto tree nodes =
+    match eval true auto tree nodes with
+      `Full l -> l
+    | _ -> assert false
+
+  let eval auto tree nodes =
+    match eval false auto tree nodes with
+      `Normal l -> l
+    | _ -> assert false
+
 end
index d57f6c9..1efe4a7 100644 (file)
@@ -16,4 +16,5 @@
 module Make (T : Tree.S) :
   sig
     val eval : Ata.t -> T.t -> T.node list -> T.node list
+    val full_eval : Ata.t -> T.t -> T.node list -> (State.t * T.node list) list
   end
index 4d7e693..d8c3e09 100644 (file)
@@ -24,56 +24,123 @@ let time f arg msg =
   r
 
 
+let compose_parallel run auto_list tree nodes () =
+  match auto_list with
+    [ auto ] -> [run auto tree nodes]
+  | _ -> assert false
+
+let compose_sequential run auto_list tree nodes () =
+  [ List.fold_left (fun acc auto ->
+    run auto tree acc) nodes auto_list ]
+
+
+let restart_parallel run auto_list tree nodes () =
+  match auto_list with
+    [ auto ] -> List.map snd (run auto tree nodes)
+  | _ -> assert false
+
+let restart_sequential run auto_list tree nodes () =
+  List.map (fun auto -> run auto tree nodes) auto_list
+
 let main () =
   let () = Options.parse () in
   let doc =
     let fd, close_fd = match !Options.input_file with
-      None -> stdin, ignore
+      None | Some "-" | Some "/dev/stdin" -> stdin, ignore
     | Some input ->
         let fd = open_in input in fd, fun () -> close_in fd
     in
     let d = time Naive_tree.load_xml_file fd "parsing xml document" in
     close_fd (); d
   in
-  let query =
+  let queries =
     time
-      Xpath.Parser.parse
-      (Ulexing.from_latin1_string !Options.query)
-      "parsing XPath query"
+      (fun l ->
+        List.map (fun q ->
+          Xpath.Parser.parse
+            (Ulexing.from_utf8_string q)) l)
+      !Options.queries
+      "parsing XPath queries"
   in
-  let auto =
-    time Xpath.Compile.path query "compiling XPath query"
+  (* parallel, compose  ->     action
+     true, true -> Ata.concat of all automata and single run
+     true, false -> Ata.merge of all automata and single run
+     false, true -> Eval first, then run on results then ...
+     false, false -> Eval first on root, then second on root then ...
+  *)
+  let auto_list =
+    time
+      (fun l ->
+        List.map (fun query -> Xpath.Compile.path query) l)
+      queries
+      "compiling XPath queries"
+  in
+  let auto_list =
+    if !Options.parallel then
+      match auto_list with
+        fst :: rest ->
+          let f =
+            if !Options.compose then
+              Ata.concat
+            else
+              Ata.merge
+          in
+          let big_auto = List.fold_left f fst rest in
+          [big_auto]
+      | _ -> assert false
+
+    else
+      auto_list
   in
-  let auto = time Ata.copy auto "copying Automaton" in
   let output =
     match !Options.output_file with
     | None | Some "-" | Some "/dev/stdout" -> stdout
     | Some f -> open_out f
   in
   if !Options.stats then begin
-    Logger.msg `STATS "Query: %a " Xpath.Ast.print_path query;
-    Logger.msg `STATS "@[Automaton: @\n%a@]" Ata.print auto;
+    List.iter (fun query ->
+      Logger.msg `STATS "Query: %a " Xpath.Ast.print_path query) queries;
+    List.iter (fun auto ->
+      Logger.msg `STATS "@[Automaton: @\n%a@]" Ata.print auto) auto_list;
   end;
 
   let module Naive = Run.Make(Naive_tree) in
-  let results =
-    time (Naive.eval auto doc) ([Naive_tree.root doc]) "evaluating query"
+  let result_list =
+    let root = [ Naive_tree.root doc] in
+    let f, msg =
+      match !Options.parallel, !Options.compose with
+        true, true ->
+          compose_parallel Naive.eval auto_list doc root, "parallel/compose"
+      | true, false ->
+          restart_parallel Naive.full_eval auto_list doc root, "parallel/restart"
+      | false, true ->
+          compose_sequential Naive.eval auto_list doc root , "sequential/compose"
+      | false, false ->
+          restart_sequential Naive.eval auto_list doc root, "sequential/restart"
+    in
+    time f () ("evaluating query in " ^ msg ^ " mode")
   in
   time (fun () ->
-  output_string output "<xml_result>\n";
-  if !Options.count then begin
-    output_string output (string_of_int (List.length results));
-    output_char output '\n';
-  end else
-    List.iter (fun n ->
-      Naive_tree.print_xml output doc n;
-      output_char output '\n'
-    ) results;
-  output_string output "</xml_result>\n";
-  flush output;
-  if output != stdout then close_out output
+    let count = ref 1 in
+    List.iter (fun results ->
+      output_string output "<xml_result num=\"";
+      output_string output (string_of_int !count);
+      output_string output "\" >\n";
+      if !Options.count then begin
+        output_string output (string_of_int (List.length results));
+        output_char output '\n';
+      end else
+        List.iter (fun n ->
+          Naive_tree.print_xml output doc n;
+          output_char output '\n'
+        ) results;
+      output_string output "</xml_result>\n";
+      incr count
+    ) result_list;
+    flush output;
+    if output != stdout then close_out output
 
-) () "serializing results"
+  ) () "serializing results"
 
 
 let () =
index 6987b4c..cd887b7 100644 (file)
@@ -236,6 +236,12 @@ let path p =
       nasts) (StateSet.empty, StateSet.empty, [], StateSet.empty) p
   in
   let builder = Ata.Builder.make () in
+  (** ensure that we have a single selecting state at the end *)
+  let phi_sel = StateSet.fold (fun q acc -> F.or_ (F.stay q) acc) mstates F.false_ in
+  let q_sel = State.make () in
+  let states = StateSet.add q_sel states in
+  let mstates = StateSet.singleton q_sel in
+  let trans = (q_sel, [QNameSet.any, phi_sel]) :: trans in
   StateSet.iter
     (Ata.Builder.add_state builder ~starting:true) sstates;
   StateSet.iter
index 0adab38..e0ba34a 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B>
 <C id="n3" post="1" pre="3">clergywoman</C>
 <D id="n4" post="2" pre="4">decadent</D>
index 9de6bbd..bf63d7c 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L>
 </xml_result>
index 9de6bbd..bf63d7c 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L>
 </xml_result>
index 1a1784e..a69088e 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <M id="n13" post="10" pre="13"/>
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
 <Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q>
index 26ca0b8..26875fd 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E>
 </xml_result>
index 6e09c87..37becd7 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <M id="n13" post="10" pre="13"/>
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
 <O id="n15" post="11" pre="15">ovenware</O>
index 829fd9f..2c8971a 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L>
 <M id="n13" post="10" pre="13"/>
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
index 1a5765c..a84fce6 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <A id="n1" post="26" pre="1" xml:lang="en"><B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B><E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E><X id="n24" post="25" pre="24"><Y id="n25" post="23" pre="25">yawn</Y><Z id="n26" idrefs="n8 n17" post="24" pre="26" xml:lang="it">zuzzurellone</Z></X></A>
 <E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E>
 </xml_result>
index 8345b9d..8744ddb 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <A id="n1" post="26" pre="1" xml:lang="en"><B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B><E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E><X id="n24" post="25" pre="24"><Y id="n25" post="23" pre="25">yawn</Y><Z id="n26" idrefs="n8 n17" post="24" pre="26" xml:lang="it">zuzzurellone</Z></X></A>
 <E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E>
 <L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L>
index dca0301..430a92c 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R>
 <U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U>
 </xml_result>
index 6403866..8ded737 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F>
 <I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I>
 </xml_result>
index b0181f8..f78d6e0 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R>
 <S id="n19" post="16" pre="19">sage</S>
 <T id="n20" post="17" pre="20">tattered</T>
index 0383baf..2337e21 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R>
 <U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U>
 <X id="n24" post="25" pre="24"><Y id="n25" post="23" pre="25">yawn</Y><Z id="n26" idrefs="n8 n17" post="24" pre="26" xml:lang="it">zuzzurellone</Z></X>
index 439c8cb..92b9cea 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <S id="n19" post="16" pre="19">sage</S>
 <T id="n20" post="17" pre="20">tattered</T>
 <V id="n22" post="19" pre="22">voluptuary</V>
index 4a252cf..a460c56 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B>
 <C id="n3" post="1" pre="3">clergywoman</C>
 <D id="n4" post="2" pre="4">decadent</D>
index af9ff00..1f69ba8 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <A id="n1" post="26" pre="1" xml:lang="en"><B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B><E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E><X id="n24" post="25" pre="24"><Y id="n25" post="23" pre="25">yawn</Y><Z id="n26" idrefs="n8 n17" post="24" pre="26" xml:lang="it">zuzzurellone</Z></X></A>
 <E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E>
 <M id="n13" post="10" pre="13"/>
index b0181f8..f78d6e0 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R>
 <S id="n19" post="16" pre="19">sage</S>
 <T id="n20" post="17" pre="20">tattered</T>
index 9de6bbd..bf63d7c 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L>
 </xml_result>
index f6bea4b..7cfb3ab 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <A id="n1" post="26" pre="1" xml:lang="en"><B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B><E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E><X id="n24" post="25" pre="24"><Y id="n25" post="23" pre="25">yawn</Y><Z id="n26" idrefs="n8 n17" post="24" pre="26" xml:lang="it">zuzzurellone</Z></X></A>
 <B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B>
 <C id="n3" post="1" pre="3">clergywoman</C>
index 26ca0b8..26875fd 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E>
 </xml_result>
index 1a1784e..a69088e 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <M id="n13" post="10" pre="13"/>
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
 <Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q>
index 1a5765c..a84fce6 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <A id="n1" post="26" pre="1" xml:lang="en"><B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B><E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E><X id="n24" post="25" pre="24"><Y id="n25" post="23" pre="25">yawn</Y><Z id="n26" idrefs="n8 n17" post="24" pre="26" xml:lang="it">zuzzurellone</Z></X></A>
 <E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E>
 </xml_result>
index 8345b9d..8744ddb 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <A id="n1" post="26" pre="1" xml:lang="en"><B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B><E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E><X id="n24" post="25" pre="24"><Y id="n25" post="23" pre="25">yawn</Y><Z id="n26" idrefs="n8 n17" post="24" pre="26" xml:lang="it">zuzzurellone</Z></X></A>
 <E id="n5" post="22" pre="5"><F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F><I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I><L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L><R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R><U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U></E>
 <L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L>
index 6e09c87..37becd7 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <M id="n13" post="10" pre="13"/>
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
 <O id="n15" post="11" pre="15">ovenware</O>
index 829fd9f..2c8971a 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <L id="n12" post="15" pre="12"><!--L is the twelve-th letter of the English alphabet-->The letter L is followed by the letter:<M id="n13" post="10" pre="13"/>which is followed by the letter:<N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N><?myPI value="XPath is nice"?><Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q></L>
 <M id="n13" post="10" pre="13"/>
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
index 6403866..8ded737 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <F id="n6" post="6" pre="6"><G id="n7" post="4" pre="7">gentility</G><H id="n8" idrefs="n17 n26" post="5" pre="8">happy-go-lucky man</H></F>
 <I id="n9" post="9" pre="9"><J id="n10" post="7" pre="10">jigsaw</J><K id="n11" post="8" pre="11">kerchief</K></I>
 </xml_result>
index dca0301..430a92c 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <R id="n18" post="18" pre="18"><S id="n19" post="16" pre="19">sage</S><T id="n20" post="17" pre="20">tattered</T></R>
 <U id="n21" post="21" pre="21"><V id="n22" post="19" pre="22">voluptuary</V><W id="n23" post="20" pre="23">wriggle</W></U>
 </xml_result>
index 0adab38..e0ba34a 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <B id="n2" post="3" pre="2"><C id="n3" post="1" pre="3">clergywoman</C><D id="n4" post="2" pre="4">decadent</D></B>
 <C id="n3" post="1" pre="3">clergywoman</C>
 <D id="n4" post="2" pre="4">decadent</D>
index 6332e2d..382544b 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 The letter L is followed by the letter:
 which is followed by the letter:
 </xml_result>
index a990051..9f87b33 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <!--L is the twelve-th letter of the English alphabet-->
 </xml_result>
index 0ae8d20..b25c6db 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <?myPI value="XPath is nice"?>
 </xml_result>
index 0ae8d20..b25c6db 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <?myPI value="XPath is nice"?>
 </xml_result>
index c95635d..83ac2cf 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <!--L is the twelve-th letter of the English alphabet-->
 The letter L is followed by the letter:
 <M id="n13" post="10" pre="13"/>
index c35335e..52f4d06 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
 </xml_result>
index 1a1784e..a69088e 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <M id="n13" post="10" pre="13"/>
 <N id="n14" post="13" pre="14"><O id="n15" post="11" pre="15">ovenware</O><P id="n16" post="12" pre="16">plentiful</P></N>
 <Q id="n17" idrefs="n8 n26" post="14" pre="17">quarrelsome</Q>
index 57f3545..172422a 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <!-- a simple comment -->
 </xml_result>
index e4f6cef..46f97a0 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> brethren hath powers intents </keyword>
 <keyword> pudding ceremonious troyan maim drain <bold> supplications air kindly shrine office stabbed </bold> disarms </keyword>
 <keyword> show <emph> feels pocket </emph> </keyword>
index 0e46d7a..e6556e7 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> miserable wash twelvemonth baby earthly fairy spare passes rise caitiff <emph> scattered </emph> brach words empty ground domain cup negligence speaks hundred encounter thus drawn observation broke will </keyword>
 <keyword> heads wast skulls mark objects dies pagan lose wight cinna description </keyword>
 <keyword> lie poisons </keyword>
index 0e46d7a..e6556e7 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> miserable wash twelvemonth baby earthly fairy spare passes rise caitiff <emph> scattered </emph> brach words empty ground domain cup negligence speaks hundred encounter thus drawn observation broke will </keyword>
 <keyword> heads wast skulls mark objects dies pagan lose wight cinna description </keyword>
 <keyword> lie poisons </keyword>
index 182ca0a..559d13a 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <date>09/08/2001</date>
 <date>08/23/2001</date>
 <date>03/16/2001</date>
index b2d49bb..ed5c67b 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <date>06/11/2000</date>
 <date>01/25/1999</date>
 <date>08/22/1999</date>
index e10e7eb..b3645d3 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>Hajin Callegarin</name>
 <name>Niklas Rudisin</name>
 <name>Husam Abdelguerfi</name>
index 5ceff22..e39451f 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>Odette Morrison</name>
 <name>Ibrahim Karnin</name>
 <name>German Barz</name>
index e2a945e..6d85805 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>Philippas Woit</name>
 <name>Takio Usdin</name>
 <name>Sakthirel Mittermeir</name>
index f9b174f..905cb75 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <interval>
 <start>11/14/2000</start>
 <end>07/26/1998</end>
index b6beecb..8f1fbf0 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>duteous nine eighteen </name>
 <name>condemn </name>
 <name>earnestly subtle spotted attend </name>
index 284fd3f..38d1a28 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> officer embrace such fears distinction attires </keyword>
 <keyword> tract element sails course placed fouler four plac joint </keyword>
 <keyword> cimber paper admittance tread character </keyword>
index 9d212b4..0c00c87 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>ungentle secure pleading snow </name>
 <name>base hoar fortunes </name>
 <name>lowest grief </name>
index 0359e79..59d2a0d 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> officer embrace such fears distinction attires </keyword>
 <keyword> tract element sails course placed fouler four plac joint </keyword>
 <keyword> cimber paper admittance tread character </keyword>
index a56764c..91aa114 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <bidder>
 <date>04/19/2000</date>
 <time>03:30:36</time>
index 5c21bc3..8916dd0 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <bidder>
 <date>01/05/2000</date>
 <time>12:53:12</time>
index c1b1b08..62780ad 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>duteous nine eighteen </name>
 <name>condemn </name>
 <name>earnestly subtle spotted attend </name>
index c7e0372..e30e91b 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>condemn </name>
 <name>earnestly subtle spotted attend </name>
 <name>poisons </name>
index f96ac1d..75bbd46 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>Fumihide Fairtlough</name>
 <name>Philippas Woit</name>
 <name>Takio Usdin</name>
index 687da92..b7db632 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <interval>
 <start>11/14/2000</start>
 <end>07/26/1998</end>
index 7637cac..174e50d 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <interval>
 <start>11/14/2000</start>
 <end>07/26/1998</end>
index 33f3af1..c127ae5 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <keyword> heathen </keyword>
 </xml_result>
index 963bf01..51577c4 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> record penury herself reasons merits villainous whereupon wrote penny mar </keyword>
 <keyword> seemeth </keyword>
 <keyword> heathen </keyword>
index 963bf01..51577c4 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> record penury herself reasons merits villainous whereupon wrote penny mar </keyword>
 <keyword> seemeth </keyword>
 <keyword> heathen </keyword>
index 91d0e7d..c028128 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <date>12/05/2001</date>
 </xml_result>
index 408ba47..3f4f2d3 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <date>06/06/2000</date>
 <date>12/05/2001</date>
 </xml_result>
index a0673ca..e738b68 100644 (file)
@@ -1,3 +1,3 @@
-<xml_result>
+<xml_result num="1">
 <name>Jaak Tempesti</name>
 </xml_result>
index 461c9f8..271722e 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <interval>
 <start>06/16/1999</start>
 <end>05/12/2001</end>
index edad0cf..ef50483 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>duteous nine eighteen </name>
 <name>great </name>
 <name>scarce brook </name>
index 06708c4..24aea62 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> officer embrace such fears distinction attires </keyword>
 <keyword> preparation rejoice </keyword>
 <keyword> season presently victory women beating </keyword>
index 4d92e81..31d06e7 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>unsur brutish </name>
 <name>nakedness </name>
 </xml_result>
index 71cc789..37a1657 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <keyword> officer embrace such fears distinction attires </keyword>
 <keyword> preparation rejoice </keyword>
 <keyword> season presently victory women beating </keyword>
index 2ac913b..30d41dc 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <bidder>
 <date>10/22/2001</date>
 <time>10:21:43</time>
index 5a8d16b..970c937 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <bidder>
 <date>07/27/2001</date>
 <time>12:36:50</time>
index 54209fa..6dc3e0a 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>duteous nine eighteen </name>
 <name>great </name>
 <name>scarce brook </name>
index 4129172..e87702e 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <name>great </name>
 <name>scarce brook </name>
 <name>abhorr execution beckon rue </name>
index 461c9f8..271722e 100644 (file)
@@ -1,4 +1,4 @@
-<xml_result>
+<xml_result num="1">
 <interval>
 <start>06/16/1999</start>
 <end>05/12/2001</end>