code: def validate(mets_doc, xmlschema=METS_XSD_PATH, schematron=AM_SCT_PATH):
      
      is_xsd_valid, xsd_error_log = xsd_validate(mets_doc, xmlschema=xmlschema)
      is_sct_valid, sct_report = schematron_validate(mets_doc, schematron=schematron)
      valid = is_xsd_valid and is_sct_valid
      report = {
          "is_xsd_valid": is_xsd_valid,
          "is_sct_valid": is_sct_valid,
          "xsd_error_log": xsd_error_log,
          "sct_report": sct_report,
      }
      report["report"] = report_string(report)
      return valid, report
docs: Validate a METS file using both an XMLSchema (.xsd) schema and a
      schematron schema, the latter of which typically places additional
      constraints on what a METS file can look like.