code: @Override
      public JsfFaceletDescriptor scan(FileResource item, String path, Scope scope, Scanner scanner) throws IOException {
          ScannerContext context = scanner.getContext();
          Store store = context.getStore();
          FileDescriptor fileDescriptor = context.getCurrentDescriptor();
          JsfFaceletDescriptor currentDescriptor = store.addDescriptorType(fileDescriptor, JsfFaceletDescriptor.class);
  
          try {
              // read the xml file
              Document doc = getDocument(item);
              // find includes
              NodeList nodeList = (NodeList) getXPath().evaluate("//ui:include", doc, XPathConstants.NODESET);
  
              for (int i = 0; i < nodeList.getLength(); i++) {
                  Node node = nodeList.item(i);
                  String includeSrc = node.getAttributes().getNamedItem("src").getNodeValue();
                  JsfFaceletDescriptor includedJsf = findJsfTemplateDescriptor(path, includeSrc, context);
  
                  if (includedJsf != null) {
                      currentDescriptor.getIncludes().add(includedJsf);
                  }
              }
  
              // find template relationship
              String templateSrc = (String) getXPath().evaluate("//ui:composition/@template", doc, XPathConstants.STRING);
  
              if (StringUtils.isNotBlank(templateSrc)) {
                  currentDescriptor.setTemplate(findJsfTemplateDescriptor(path, templateSrc, context));
              }
          } catch (XPathExpressionException | SAXException e) {
              throw new IOException(e);
          }
  
          return currentDescriptor;
      }
docs: {@inheritDoc}