docs: public static CmsXmlContainerPage unmarshal(CmsObject cms, CmsResource resource, ServletRequest req)
      throws CmsXmlException, CmsLoaderException, CmsException {
  
          String rootPath = resource.getRootPath();
  
          if (!CmsResourceTypeXmlContainerPage.isContainerPage(resource)) {
              // sanity check: resource must be of type XML content
              throw new CmsXmlException(
                  Messages.get().container(Messages.ERR_XMLCONTENT_INVALID_TYPE_1, resource.getRootPath()));
          }
  
          // try to get the requested content from the current request attribute
          // this is also necessary for historic versions that have been loaded
          CmsXmlContainerPage content = (CmsXmlContainerPage)req.getAttribute(rootPath);
  
          if (content == null) {
              // unmarshal XML structure from the file content
              content = unmarshal(cms, resource);
              // store the content as request attribute for future read requests
              req.setAttribute(rootPath, content);
          }
  
          // return the result
          return content;
      }