The code below has an if statement to validate the EML, but it doesn't do anything if it doesn't validate. Add an else to report when EML does not validate, and then stop.
tryCatch({
eml_3 <-
create_EML(metadata, entities_3, 3, here::here())
if (eml_validate(eml_3))
# if above validation returns TRUE, then serialize to XML file
write_eml(eml_3,
file = file.path(as.character(2023), paste0("EML_", 3, "_", Sys.Date(), ".xml")))
},
error = function(e) {
stop(e)
})