code: public void setAttribute(String name, String value, String facet)
              throws JspException
      {
          boolean error = false;
  
          // validate the name attribute, in the case of an error simply return.
          if (name == null || name.length() <= 0) {
              String s = Bundle.getString("Tags_AttributeNameNotSet");
              registerTagError(s, null);
              error = true;
          }
          if (facet != null) {
              String s = Bundle.getString("Tags_AttributeFacetNotSupported", new Object[]{facet});
              registerTagError(s, null);
              error = true;
          }
  
          // it's not legal to set the href attributes this way
          if (name != null && name.equals(HREF)) {
              String s = Bundle.getString("Tags_AttributeMayNotBeSet", new Object[]{name});
              registerTagError(s, null);
              error = true;
          }
          if (error)
              return;
  
          // set the state variables that will override the tag settings...
          if (name.equals(TARGET)) {
              _state.target = value;
              return;
          }
  
          _state.registerAttribute(AbstractAttributeState.ATTR_GENERAL, name, value);
      }
docs: Base support for the attribute tag.  The <code>href</code> may not bet set.
  @param name  The name of the attribute.  This value may not be null or the empty string.
  @param value The value of the attribute.  This may contain an expression.
  @param facet The name of a facet to which the attribute will be applied.  This is optional.
  @throws JspException A JspException may be thrown if there is an error setting the attribute.