Prompt, please, into which door i must to knock (was: budget to implement HTML6)

Prompt, please, into which door i must to knock to know cost (in money and time)
of HTML-part of the following project, implemented in Firefox or Opera
(SQL-part is described only for completeness of picture).




Whole task (at 12 November 2008) consists of implementation of:
1) http://html60.euro.ru/site/html60/en/author/looker_eng.htm

   http://html60.euro.ru/site/html60/en/author/tree_eng.htm

   http://html60.euro.ru/site/html60/en/author/combo_eng.htm

   http://html60.euro.ru/site/html60/en/author/tabfile_eng.htm

   http://html60.euro.ru/site/html60/en/author/cube_eng.htm

   with changes [1]
2) slides #17-42, 47-56, 63, 102-109, 114-143, 147-157, 160-177, 180-197 of http://sql50.euro.ru/sql5.16.4.pdf

   with changes [2]

Changes are not reflected on http://sql50.euro.ru and http://html60.euro.ru yet

P.S.
http://sql50.euro.ru/site/sql50/en/author/mtd_eng.htm is rejected




[1]

*) terms (for two related projects - HTML6 & SQL5)

  _master table_ is table, to primary key of which _slave table_ refers

  if html master table is not in the same html-document (where slave table is),
  and user clicks cell of html slave table (refering to master table),
  then new separate browser window appears, and *content of master* table is displayed in it.

  field of view A refers to the same column (of second table C), to which selected (by view) field (of table B) refers


  communication - must be implemented via SQL5 over TCP
  (look at slides #27-28 of http://sql50.euro.ru/sql5.16.4.pdf)
  without closing TCP-connection after obtaining XML-document (or HTML-document as particular case)

  each 'select ...' extracts data into LAN or WAN
  (instead of 'insert ... select ...' and 'select ... into ...', coping data into internal DBMS table)
  
  each 'select ... union ... select ...' interpreted as single extraction of xml into LAN or WAN



*) HTML6


changes of 
http://html60.euro.ru/site/html60/en/author/looker_eng.htm


  attribute @action is removed, @name is replaced by @roll (@roll=A means, that this html-table interacts with database table A)
  
  attribute @master is removed - browser obtains database scheme by SQL-requests from system-tables
  (relation via several intermediate foreing keys are supported), when it meets <table roll= > first time
  
  instead of attributes
@portion and @visual
  properties
"portion" and "visual"
  must be implemented
  (only <table> with specified attribute @roll has properties "portion" and "visual",
  properties have default values - specification of them in CSS is optional)

  instead of html
<table name="M" action="./scriptM.cgi" portion="50" visual="20" id="id1">
<table name="S" action="./scriptS.cgi" portion="40" visual="10" master="id1">
  the following html-construction must be implemented
<table roll="M"/>
<table roll="S"/>

  as well as instead of html
<table name="M" action="./scriptM.cgi" portion="50" visual="20" id="id1">
<table name="N" action="./scriptN.cgi" portion="50" visual="20" id="id2">
<table name="P" action="./scriptP.cgi" portion="50" visual="20" id="id3">
<table name="S" action="./scriptS.cgi" portion="40" visual="10" master="id1 id2 id3">
  the following html-construction must be implemented
<table roll="M"/>
<table roll="N"/>
<table roll="P"/>
<table roll="S"/>


  instead of submitting
<_ name="A" event="TableDown">
<_ name="A" event="TableUp">
  browser uses SQL5, i.e.
order by @a2 asc, @a3 desc, @a1 asc
downward @a1=100 @a2=null @a3="string"
  and
order by @a2 asc, @a3 desc, @a1 asc
upward   @a1=100 @a2=null @a3="string"

  as well as instead of submitting
<_ name="A" event="TableDelete">
<_ name="A" event="TableUpdate">
<_ name="A" event="count">
  browser uses traditional SQL

  as well as instead of submitting
<_ name="A" event="TableInsert">
<a  a1= a2= a3="tiger.jpg">
<file name="a3" filename="tiger.jpg">Y29udGVudHMgb2YgZmlsZTEudHh0</file>  
  browser uses SQL5, i.e.
<a  a1= a2= a3="tiger.jpg">
<?file attr="a3" value="tiger.jpg" xml:size= >Y29udGVudHMgb2YgZmlsZTEudHh0</file>  


  in addition to mentioned, if slave table S by several own fields refers to master table M, attribute
@influence
  of html master table M specifies _value_ of attribute @id of html slave table S, and attribute
@field
  of html master table specifies _name_ of field of database table S, e.g.
<table roll=M influence=id1 field=s3/>
<table roll=M influence=id1 field=s5/>
<table roll=M influence=id1 field=s7/>
<table roll=S id=id1/>

  attribute @influence is unnecessary, if there is only one html master table
  (but it is necessary, if there are several html slave tables, refering one master table)
<table roll=M influence=id1 field=s3/>
<table roll=S id=id1/>
<table roll=S id=id2/>


  in addition to mentioned, if slave table S by several own fields refers to master table M,
  additional virtual column is specified by CSS for html master table
table[id=idm] §m20::after
  property
"cultivate"
  specifies slave table S, and property
"field"
  specifies one of slave fields, refering to master table
table[id=idm] §m20::after { cultivate:S; field:s5 }
  user clicks cell of this virtual column,
  then new separate browser window appears, and *content of slave* table is displayed in it
  
  property "field" is unnecessary, if there is only one field of slave table S refers to master table M
table[id=idm] §m20::after { cultivate:S }
  

  in addition to mentioned, statement
table [roll=A] { §a2: B C }
  means, that "C" is master table for "B", "B" is master table for "§a2",
  and that browser represents content "C" before content "B" to choose sub-set of "B"


  in addition to mentioned, appending virtual column must be implemented
table[roll=M]    ¶m20::after               { cultivate:s;   field:s5    }
table[roll=M]    ¶m20::after::after        { cultivate:ss;  field:ss8   }
table[roll=M]    ¶m20::after::after::after { cultivate:sss; field:ssss7 }

  as well as several values of property "display" must be implemented
§t1 { display: table-cell input}           /* read-write */

  as well as calculation of column must be implemented
§t1 { value: §t2+§t3 }
    

  in addition to mentioned,
  each 1-st click at column header of html table orders values ascendenting,
  each 2-nd click - orders descending


<table    name="A" action="./script.cgi"  portion="50" visual="20">
  <select name="B" action="./script2.cgi" portion="40" visual="10">a2</select>
</table>
  is removed (as redundant)




changes of 
http://html60.euro.ru/site/html60/en/author/combo_eng.htm


  instead of
<select name="C" action="./script2.cgi" portion="40">
  the following element must be implemented
<select roll=C/>

  database table for <select name= > must contain only two columns -
  primary key (extracted as @value of <option>), and any other field (extracted as content of <option>)
  
  in addition to mentioned, properties
"portion" and "visual"
  must be implemented
  (only <select> with specified attribute @roll has properties "portion" and "visual",
  properties have default values - specification of them in CSS is optional)




changes of 
http://html60.euro.ru/site/html60/en/author/tree_eng.htm


  instead of
<ul name="A" action="./script.cgi">
  the following element must be implemented
<ul roll=A>

  database table for <ul> must contain only two columns - 
  primary key (extracted as @id of <li>), and any other field (extracted as content of <li>)




changes of 
http://html60.euro.ru/site/html60/en/author/looker_eng.htm

http://html60.euro.ru/site/html60/en/author/tree_eng.htm

  in addition to mentioned, <ul name=A> is master html-element for <table name=B>,
  if database table "B" refers to database table "A"
  



changes of 
http://html60.euro.ru/site/html60/en/author/tabfile_eng.htm

http://html60.euro.ru/site/html60/en/author/cube_eng.htm


<table> 
  <thead>
  <tside>
  <tbody>
</table>
  is rejected for benefit of
<table> 
  <thead1>
  <tside1>
  <tbody>
</table>

  in addition to mentioned, content of <thead1>, etc, <tside1>, etc can absent, when attribute @roll present
<table> 
  <thead1 roll=A/>
  <thead2 roll=B/>
  <thead3 roll=C/>
  <tside1 roll=M/>
  <tside2 roll=N/>
  <tside3 roll=P/>
  <tbody  roll=Z>
</table>




changes of 
http://html60.euro.ru/site/html60/en/author/looker_eng.htm

http://html60.euro.ru/site/html60/en/author/tree_eng.htm

http://html60.euro.ru/site/html60/en/author/combo_eng.htm

http://html60.euro.ru/site/html60/en/author/tabfile_eng.htm

http://html60.euro.ru/site/html60/en/author/cube_eng.htm


  in addition to mentioned, html-elements <table>, <select>, <u>, <thead1>, etc, <tside1>, etc, <tbody> have property
"address"
  specifing Domain Name or IP-address, to which SQL will be submitted
  (it's default value is equal to address, from which html-document was received)


  in addition to mentioned, SQL-request can be value of attribute @roll
<table  roll="select ..."/>
<select roll="select ..."/>
<u      roll="select ..."/>
<thead1 roll="select ..."/>
<tside1 roll="select ..."/>
<tbody  roll="select ..."/>
  answer to this request is obtained after html-document (after </html>) via the same TCP-connection
  (answers to several requests are obtained consecutively, separated by bament <?new/?>)
  
  if attribute @role is not specified, then browser interprets content of
  <table>...</table>, <select>...</select>, <u>...</u>, <thead1>...</thead1>, etc, <tside1>...</tside1>, etc, <tbody>...</tbody>,
  as it is represented in mentioned papers of http://html60.euro.ru





  pressing browser botton "back" not only display previos XML-document, but also sends bament
<?back/?>
  (which rollback transaction in DBMS to previos 'select ...')

  bottons to append and remove table row must be implemented in menu of browser window
  (implementation in way of WebForms2 is optional)

  botton to commit transaction must be implemented in menu of browser window, pressing on which will send
<?commit/?>

  property 'save' means, that at pressing ^S, html/xml-document will be saved with entered values
input { save:yes }





[2] SQL5



  in addition to slide
#31,etc of http://sql50.euro.ru/sql5.16.4.pdf

  statement
SELECT * FROM a.b.c COMMENTING a, b;
  extracts comment of fields of "a", "b"
COMMENT a/@a1 BY "column title";
  as first xml-elements <a>, <b> with additional (service) xml-attribute @_ (_=comment)




  in addition to slide
#31-32, 39(Another output), 40 of http://sql50.euro.ru/sql5.16.4.pdf

  and
http://html60.euro.ru/site/html60/en/author/looker_eng.htm

http://html60.euro.ru/site/html60/en/author/combo_eng.htm

http://html60.euro.ru/site/html60/en/author/tree_eng.htm

  DBMS ends each answer to request by bament <?new/?>




  instead of slide 
#40 of http://sql50.euro.ru/sql5.16.4.pdf

  the following construction must be implemented
  ("downward" instead of "start by")  
order by @a2 asc, @a3 desc, @a1 asc
downward @a1=100 @a2=null @a3="string"

order by @a2 asc, @a3 desc, @a1 asc
downward (select * from a where ... limit 1 )

order by @a2 asc, @a3 desc, @a1 asc
upward   @a1=100 @a2=null @a3="string"

order by @a2 asc, @a3 desc, @a1 asc
upward   (select * from a where ... limit 1 )
  reason: features of MTD are moved into browser




  in addition to slide
#173 of http://sql50.euro.ru/sql5.16.4.pdf

  authentification (obtaining username and password) must be implemented by baments
  (look at slides #26-27) and is described nowhere



 
  in addition to
http://html60.euro.ru/site/html60/en/author/forxml_eng.htm (for "select * from A", i.e. extracting XML)
http://html60.euro.ru/site/html60/en/author/quest_eng.htm#webforms_data (<data id="records">...</data>)
  Each extraction of data into LAN or WAN is automatically:
  - anticipated by content of field 'beginning' of system table 'SysXmlFormatting'
  - ended by content of field 'end' of system table 'SysXmlFormatting'.
  Other field of system table 'SysXmlFormatting' is URL
  (which specifies browser URL; 'null' means all URL and is applied,
  only if 'SysXmlFormatting' does not contain record with exact URL)




  each 'select ...' (extracting data into LAN/WAN) is savepoint -
  DBMS rollbacks to this savepoint, having obtained bament
<?back/?>

  accepting bament
<?commit/?>
  DBMS commits current transaction to point of previous 'select ...'


  if table "b" below is created
--------------------------
| b1 | b2 |      b3      |
|------------------------|
|         | a1 | a2 | a3 |
|------------------------|
|                        |
|                        |
--------------------------
  then expression
IMPLY b/@b3 as b/@b3/@a2;
  influence so, that any 'SELECT @b3 FROM b' will extract only one elementary field (@a2) 
  instead of all branch elementary fields (@a1, @a2, @a3),
  i.e. mentioned statement will be equivalent to 'SELECT @b3/@a2 FROM b'.
  it's for multi-language applications (@a1, @a2, @a3 contain notes in different languages)

  permissions for field are controlled by
GRANT/REVOKE SELECT/INSERT/UPDATE ON tab/@fld FOR user1;



  
in regard to
http://html60.euro.ru/site/html60/en/author/forxml_eng.htm

  http://www.whatwg.org/specs/web-forms/current-work/#the-output  
  http://lists.w3.org/Archives/Public/public-html/2007May/0173.html


  DBMS creates separete CSS-file "username.css" for each user "username" in local (for DBMS) directory,
  all slave tables are specified for each master table _after last column of master table_
  (as ¶fieldname instead of §fieldname, that mark ¶ works like comment for this xml-attribute)
table[roll=M]    ¶m20::after               { cultivate:s;   field:s5    }
table[roll=M]    ¶m20::after::after        { cultivate:ss;  field:ss8   }
table[roll=M]    ¶m20::after::after::after { cultivate:sss; field:ssss7 }
  
  all accessable database fields (for user "username") are listed as re-writable, if user can update database field
t             { display: table-row       }
¶t1, ¶t2, ¶t3 { display: table-cell input} /* read-write */
  or as read-only, if user cannot update database field after "REVOKE update ON t FOR user1"
t             { display: table-row       }
¶t1, ¶t2, ¶t3 { display: table-cell      } /* read only */

  bond between view A and table B, from which field was selected (by view), is similar to foreign key:
  column of second table C, refering (by foreign key) to selected field of B, is directly accessable from virtual field of A.
  DBMS lists all slave table for each view (view will be processed by html-element <table>):
  create table b (...);
  create table c (..., c5 int references b(@b1), ...);
  create view  a as    select* from b;  
table[roll=A]    ¶b20::after               { cultivate:c;   field:c5    }

  fields, calculated upon other fields and don't saved really, specified as calculated
¶t1           { value: §t2+§t3 }
    
  CSS-files are available for editing for DBMS administrator.
  DBMS does not re-write corrections, made manually.




Dmitry (SQL50, HTML60)

Received on Wednesday, 12 November 2008 12:17:07 UTC