code: public void cacheDtdSystemId(String dtdSystemLocation, String dtdFilename, String dtdUrlPrefix) {
  
          if (dtdSystemLocation != null) {
              try {
                  String file = CmsFileUtil.readFile(dtdSystemLocation + dtdFilename, CmsEncoder.ENCODING_UTF_8);
                  CmsXmlEntityResolver.cacheSystemId(
                      dtdUrlPrefix + dtdFilename,
                      file.getBytes(CmsEncoder.ENCODING_UTF_8));
                  if (LOG.isDebugEnabled()) {
                      LOG.debug(
                          org.opencms.configuration.Messages.get().getBundle().key(
                              org.opencms.configuration.Messages.LOG_CACHE_DTD_SYSTEM_ID_1,
                              new Object[] {dtdUrlPrefix + dtdFilename + " --> " + dtdSystemLocation + dtdFilename}));
                  }
              } catch (IOException e) {
                  LOG.error(
                      org.opencms.configuration.Messages.get().getBundle().key(
                          org.opencms.configuration.Messages.LOG_CACHE_DTD_SYSTEM_ID_FAILURE_1,
                          new Object[] {dtdSystemLocation + dtdFilename}),
                      e);
              }
          }
      }
docs: Adds a new DTD system id prefix mapping for internal resolution
  of external URLs.<p>
  
  @param dtdSystemLocation the internal system location of the DTD file, e.g. <code>org/opencms/configuration/</code>
  @param dtdFilename the name of the DTD file, e.g. <code>opencms-configuration.dtd</code>
  @param dtdUrlPrefix the external system id prefix of the DTD file, e.g. <code>http://www.opencms.org/dtd/6.0/</code>
  
  @see org.opencms.configuration.I_CmsXmlConfiguration