code: @Override
      public final ProcessorResult processAttribute(final Arguments arguments,
              final Element element, final String attributeName) {
          NestableNode parent = element.getParent();
  
          final String fieldNameExpr = element.getAttributeValue(attributeName);
          final String fieldName;
          if (fieldNameExpr.contains("#") || fieldNameExpr.contains("$")) {
              fieldName = parse(arguments, fieldNameExpr);
          } else {
              fieldName = fieldNameExpr;
          }
  
          if (validFieldNodes.contains(element.getNormalizedName())) {
              addAttributesToInputElement(element, fieldName);
          }
          element.removeAttribute(attributeName);
  
          String labelExpr = element.getAttributeValue(BS_LABEL);
          if (labelExpr == null) {
              labelExpr = createLabelExpression(fieldName);
          }
  
          final String label;
          if (labelExpr.contains("#") || labelExpr.contains("$")) {
              label = parse(arguments, labelExpr);
          } else {
              label = labelExpr;
          }
  
          element.removeAttribute(BS_LABEL);
  
          // Reorganize the DOM
          final Node newNode =
                  createBootstrapField(fieldName, label, element, showError());
          parent.insertAfter(element, newNode);
          parent.removeChild(element);
  
          return ProcessorResult.OK;
      }
docs: {@inheritDoc}