- let ich = open_in fname in
- let lexbuf = Lexing.from_channel ich in
- let ns, ds = TP.script TL.token lexbuf in
- close_in ich; includes := bname :: !includes;
- let ns = ("", "http://www.w3.org/1999/xhtml") :: ns in
- let och = XU.open_out bname ns in
- L.iter (process_directive och bname) ds;
- XU.close_out och
+ if List.mem bname !includes then ()
+ else begin
+ let ich = open_in fname in
+ let lexbuf = Lexing.from_channel ich in
+ let ns, ds = TP.script TL.token lexbuf in
+ close_in ich; includes := bname :: !includes;
+ let ns = ("", "http://www.w3.org/1999/xhtml") :: ns in
+ let och = XU.open_out bname ns in
+ L.iter (process_directive och bname) ds;
+ XU.close_out och
+ end
"-X", A.Unit O.clear, help_X;
"-b", A.String ((:=) O.baseuri), help_b;
"-X", A.Unit O.clear, help_X;
"-b", A.String ((:=) O.baseuri), help_b;
- "-d0", A.Set O.d0, help_d0;
- "-d1", A.Set O.d1, help_d1;
- "-d2", A.Set O.d2, help_d2;
- "-e1", A.Set O.e1, help_e1;
- "-e2", A.Set O.e2, help_e2;
- "-p0", A.Set O.p0, help_p0;
- "-p1", A.Set O.p1, help_p1;
- "-p2", A.Set O.p2, help_p2;
+ "-d0", A.Set O.d0, help_d0;
+ "-d1", A.Set O.d1, help_d1;
+ "-d2", A.Set O.d2, help_d2;
+ "-e1", A.Set O.e1, help_e1;
+ "-e2", A.Set O.e2, help_e2;
+ "-p0", A.Set O.p0, help_p0;
+ "-p1", A.Set O.p1, help_p1;
+ "-p2", A.Set O.p2, help_p2;