(** Debug utility for testing individual HTML files against the validator *) let () = if Array.length Sys.argv < 2 then begin Printf.printf "Usage: debug_validator \n"; exit 1 end; let path = Sys.argv.(1) in let ic = open_in path in let content = really_input_string ic (in_channel_length ic) in close_in ic; Printf.printf "=== Checking: %s ===\n\n" path; Printf.printf "Input (%d bytes):\n%s\n\n" (String.length content) content; let reader = Bytesrw.Bytes.Reader.of_string content in let result = Html5_checker.check ~collect_parse_errors:true ~system_id:path reader in let errors = Html5_checker.errors result in let warnings = Html5_checker.warnings result in Printf.printf "=== Results ===\n"; Printf.printf "Errors: %d\n" (List.length errors); List.iter (fun msg -> Printf.printf " [ERROR] %s\n" msg.Html5_checker.Message.message; (match msg.Html5_checker.Message.location with | Some loc -> Printf.printf " at line %d, col %d\n" loc.line loc.column | None -> ()) ) errors; Printf.printf "Warnings: %d\n" (List.length warnings); List.iter (fun msg -> Printf.printf " [WARN] %s\n" msg.Html5_checker.Message.message; (match msg.Html5_checker.Message.location with | Some loc -> Printf.printf " at line %d, col %d\n" loc.line loc.column | None -> ()) ) warnings; Printf.printf "\n=== Formatted Output ===\n"; Printf.printf "%s\n" (Html5_checker.format_text result)