X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2FnodeSet.ml;h=082802930f44432e6421a75b5bd229027a0c42c8;hb=e1ae19bec9b516d8a531790bba6fb231c17c9862;hp=ad3768b1a841ea704073af0776e6ef9e0812e91b;hpb=fd8c311ef5bd3f856e7aa56c38219db6fb9f636c;p=SXSI%2Fxpathcomp.git diff --git a/src/nodeSet.ml b/src/nodeSet.ml index ad3768b..0828029 100644 --- a/src/nodeSet.ml +++ b/src/nodeSet.ml @@ -100,11 +100,18 @@ module Mat : S with type t = Tree.node mat = let conscat4 e l1 l2 l3 l4 = conscat e l1 (concat l2 (concat l3 l4)) let subtree_tags tree node tag = - { clist = SubtreeTags(tree, node, tag); - length = Tree.subtree_tags tree node tag } + let len = Tree.subtree_tags tree node tag in + if len == 0 then empty + else + { clist = SubtreeTags(tree, node, tag); + length = len } + let subtree_elements tree node = - { clist = SubtreeElts(tree, node); - length = Tree.subtree_elements tree node } + let len = Tree.subtree_elements tree node in + if len == 0 then empty + else + { clist = SubtreeElts(tree, node); + length = len } let fst_tagged tree t tag = if Tree.tag tree t == tag then t @@ -192,8 +199,12 @@ module Mat : S with type t = Tree.node mat = Unix.openfile name [ Unix.O_WRONLY; Unix.O_TRUNC; Unix.O_CREAT ] 0o666, Unix.close in - iter (fun node -> Tree.print_xml v node fd) l; - Tree.flush v fd; + ignore (Unix.write fd "\n" 0 13); + if l.length > 0 then begin + iter (fun node -> Tree.print_xml v node fd) l; + Tree.flush v fd; + end; + ignore (Unix.write fd "\n" 0 14); finish fd end