    /*
     * call-seq:
     *  optional_attributes
     *
     * A list of optional attributes for this element
     */
    static VALUE optional_attributes(VALUE self)
    {
      htmlElemDesc * description;
      Data_Get_Struct(self, htmlElemDesc, description);

      VALUE list = rb_ary_new();

      if(NULL == description->attrs_opt) return list;

      int i = 0;
      while(description->attrs_opt[i]) {
        rb_ary_push(list, NOKOGIRI_STR_NEW2(description->attrs_opt[i], "UTF-8"));
        i++;
      }

      return list;
    }