- From: Dmitry Turin <html60@narod.ru>
- Date: Wed, 12 Nov 2008 15:16:20 +0300
- To: public-html@w3.org
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