/**
   * Apply a set of attributes to the element.
   *
   * @param transformer non-null reference to the the current transform-time state.
   * @throws TransformerException
   */
  public void execute(TransformerImpl transformer) throws TransformerException {

    if (transformer.isRecursiveAttrSet(this)) {
      throw new TransformerException(
          XSLMessages.createMessage(
              XSLTErrorResources.ER_XSLATTRSET_USED_ITSELF,
              new Object[] {m_qname.getLocalPart()})); // "xsl:attribute-set '"+m_qname.m_localpart+
    }

    transformer.pushElemAttributeSet(this);
    super.execute(transformer);

    ElemAttribute attr = (ElemAttribute) getFirstChildElem();

    while (null != attr) {
      attr.execute(transformer);

      attr = (ElemAttribute) attr.getNextSiblingElem();
    }

    transformer.popElemAttributeSet();
  }