docs: protected void exportFile(CmsFile file) throws CmsImportExportException, SAXException, IOException {
  
          String source = trimResourceName(getCms().getSitePath(file));
          I_CmsReport report = getReport();
          m_exportCount++;
          report.print(
              org.opencms.report.Messages.get().container(
                  org.opencms.report.Messages.RPT_SUCCESSION_1,
                  String.valueOf(m_exportCount)),
              I_CmsReport.FORMAT_NOTE);
          report.print(Messages.get().container(Messages.RPT_EXPORT_0), I_CmsReport.FORMAT_NOTE);
          report.print(
              org.opencms.report.Messages.get().container(
                  org.opencms.report.Messages.RPT_ARGUMENT_1,
                  getCms().getSitePath(file)));
          report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
  
          // store content in zip-file
          // check if the content of this resource was not already exported
          if (!m_exportedResources.contains(file.getResourceId())) {
              // write the file using the export writer
              m_exportWriter.writeFile(file, source);
              // add the resource id to the storage to mark that this resource was already exported
              m_exportedResources.add(file.getResourceId());
              // create the manifest-entries
              appendResourceToManifest(file, true);
          } else {
              // only create the manifest-entries
              appendResourceToManifest(file, false);
          }
  
          if (LOG.isInfoEnabled()) {
              LOG.info(
                  Messages.get().getBundle().key(Messages.LOG_EXPORTING_OK_2, String.valueOf(m_exportCount), source));
          }
          report.println(
              org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_OK_0),
              I_CmsReport.FORMAT_OK);
      }