code: @Override
      public InputSource resolveEntity(String publicId, String systemId) {
          logger.debug("CMLResolver: resolving ", publicId, ", ", systemId);
          systemId = systemId.toLowerCase();
          if ((systemId.indexOf("cml-1999-05-15.dtd") != -1) || (systemId.indexOf("cml.dtd") != -1)
                  || (systemId.indexOf("cml1_0.dtd") != -1)) {
              logger.info("File has CML 1.0 DTD");
              return getCMLType("cml1_0.dtd");
          } else if ((systemId.indexOf("cml-2001-04-06.dtd") != -1) || (systemId.indexOf("cml1_0_1.dtd") != -1)
                  || (systemId.indexOf("cml_1_0_1.dtd") != -1)) {
              logger.info("File has CML 1.0.1 DTD");
              return getCMLType("cml1_0_1.dtd");
          } else {
              logger.warn("Could not resolve systemID: ", systemId);
              return null;
          }
      }
docs: Resolves SYSTEM and PUBLIC identifiers for CML DTDs.
  
  @param publicId the PUBLIC identifier of the DTD (unused)
  @param systemId the SYSTEM identifier of the DTD
  @return the CML DTD as an InputSource or null if id's unresolvable