+ xml_tree * tree = XMLTREE(vtree);
+ myobject.tree = tree;
+
+ //allocate a lex index
+ lex_index* mylindex = new lex_index();
+
+ //take the tag parameter given by ocaml and convert
+ //it to a C++ tag and store it in the tag field of mylindex
+ if ((TAG(vtag)==-1) || (TAG(vtag2)==-1)) caml_failwith("<INVALID TAG>");
+ mylindex->tag = TAG(vtag);
+ mylindex->tag2 = TAG(vtag2);
+
+ //initialize iterators for the two vectors
+ mylindex->tagVectorIt=mylindex->tagVector.begin();
+ mylindex->tag2VectorIt=mylindex->tag2Vector.begin();
+
+ preorderTraverse(tree, 0, tree->first_child(tree->ROOT), mylindex);
+ sort(mylindex->tagVector.begin(), mylindex->tagVector.end(), myobject);
+ sort(mylindex->tag2Vector.begin(), mylindex->tag2Vector.end(), myobject);
+ printVector(tree->get_tag_name_by_ref(mylindex->tag), mylindex->tagVector);
+ printVector(tree->get_tag_name_by_ref(mylindex->tag2), mylindex->tag2Vector);
+ printVector("Result" , mergeJoin(tree, mylindex->tagVector, mylindex->tag2Vector));
+