Hi, Pgsql-hackers.

Full list of changes of two related projects (SQL5 & HTML6) at current moment
(not reflected in documentation yet).

===terms

  master table is table, to primary key of which this (slave) table refers
  (terms "master" and "slave" are used only for MTD).
  if master table is not represented in the same html-document,
  where slave is (created by "select '<table name="A">'"),
  then new separate browser window will appear, and content of master table 
will shown in it.
  master and slave table must be bound by only one foreing key in database.

  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

  because saments are saved in database, but baments are not
  (we don't need to save temporary service information), instead of sament
<_ name= event= arg= >
  the following bament must be sent
<?mtd name= event= arg= /?>

===60

in regard to
http://html60.euro.ru/site/html60/en/author/looker_eng.htm
http://sql50.euro.ru/site/sql50/en/author/mtd_eng.htm

  instead of
<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 construction must be implemented
<table name="M">
<table name="S">
  with CSS
table[name=M] { online:yes; portion:50; visual:20 }
table[name=S] { online:yes; portion:40; visual:10; master:M }

  as well as instead of
<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 construction must be implemented
<table name="M">
<table name="N">
<table name="P">
<table name="S">
  with CSS
table[name=M] { online:yes; portion:50; visual:20 }
table[name=N] { online:yes; portion:50; visual:20 }
table[name=P] { online:yes; portion:50; visual:20 }
table[name=S] { online:yes; portion:40; visual:10; master:M N P }
  or (if slave table refers to one master table by 3 own fields)
table[name=M] { online:yes; portion:50; visual:20 }
table[name=S] { online:yes; portion:40; visual:10; master:M/§s3 N/§s4 P/§s5 }
  where §s3, §s4, §s5 are fields of table "S"


  instead of sament
<_ name= event= arg= >
  the following bament must be sent
<?mtd name= event= arg= /?>
  
  as well as instead of
<_ name= event= arg= >
<a a1= a2= a3=>
  the following construction must be sent
<?mtd name= event= arg= >
<a a1= a2= a3=>
</?mtd>

  as well as instead of
<_ name="S" event="TableDown" arg="40">
<m m1= m2= m3= >
<n n1= n2= n3= >
<p p1= p2= p3= >
  the following construction must be sent
<?mtd name= event= arg= >
<m m1= m2= m3= >
<n n1= n2= n3= >
<p p1= p2= p3= >
</?mtd>
  

  instead of
<a  a1= a2= a3="tiger.jpg">
<file name="a3" filename="tiger.jpg">Y29udGVudHMgb2YgZmlsZTEudHh0</file>  
  the following construction must be implemented
<a  a1= a2= a3="tiger.jpg">
<?file attr="a3" value="tiger.jpg" xml:size= 
>Y29udGVudHMgb2YgZmlsZTEudHh0</file>  


  instead of
<table    name="A" action="./script.cgi"  portion="50" visual="20">
  <select name="B" action="./script2.cgi" portion="40" visual="10">a2</select>
</table>
  the following construction must be implemented
<table    name="A"/>
  with CSS
table [name=A] { online:yes; portion:50; visual:20 }
table [name=A] { §a2: B }                            /* 'portion', 'visual' are 
inherited */

  in addition to mentioned, statement
table [name=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 in paper, each 1-st click on column header
  (e.g. concerning to xml-attribute @a2) sends bament
<?mtd name= event=asc  arg=a2/?>
   each 2-nd click sends bament
<?mtd name= event=dsc  arg=a2/?>
   each 3-rd click sends bament
<?mtd name= event=none arg=a2/?>


  in addition to mentioned in paper, master table rise appearance of new 
separete browser window
  and displaying content of slave table in it, if 
  *) additional virtual column is specified in CSS for master table
     (slave field is specified too, if several fields of slave table refer to 
one master table)
table[name=M] §m20::after { slave:S/§s5 }
  *) user make double-click on this virtual column
  Relation "master-slave" is served by the same saments, as relation 
"slave-master";
  but refering key will be specified
<?mtd name= event= arg= >
<m/§s3 m1= m2= m3= >
</?mtd>

---

in regard to
http://html60.euro.ru/site/html60/en/author/combo_eng.htm
http://sql50.euro.ru/site/sql50/en/author/mtd_eng.htm

  instead of
<select name="C" action="./script2.cgi" portion="40">
  the following element must be implemented
<select name="C">
  with CSS
ul[name=A] { online:yes; portion:40 }


  instead of sament
<_ name= event= arg= >
  the following bament must be sent
<?mtd name= event= arg= /?>

  as well as instead of
<_ name= event= arg= >
<option id= value=>word40<option>
  the following construction must be sent
<?mtd name= event= arg= >
<option id= value=>word40<option>
</?mtd>


---

in regard to
http://html60.euro.ru/site/html60/en/author/tree_eng.htm
http://sql50.euro.ru/site/sql50/en/author/mtd_eng.htm

  instead of
<ul name="A" action="./script.cgi">
  the following element must be implemented
<ul name="A">
  with CSS
ul[name=A] { online:yes }

  instead of sament
<_ name= event= arg= >
  the following bament must be sent
<?mtd name= event= arg= /?>

---

in regard to
http://html60.euro.ru/site/html60/en/author/looker_eng.htm
http://html60.euro.ru/site/html60/en/author/tree_eng.htm
http://sql50.euro.ru/site/sql50/en/author/mtd_eng.htm

  in addition to mentioned in papers, tree as master element for table is 
possible
ul   [name=A] { online:yes }
table[name=S] { online:yes; portion:40; visual:10; master:A }
  and browser sends at user actions
<?mtd name=S event= arg= >
<li id=1>
</?mtd>
  it's supposed, that foreign key of database table "S" refers to
  primary key of database table "A"

  database table, corresponding to HTML-tree, consists of only two fields -
  of primary key (extracted as @id), and of any other field with any name
  (extracted as content of element LI)

===other HTML6 additions

  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 }

===50

in regard to
http://sql50.euro.ru/sql5.16.4.pdf (slide #31,etc)

  in addition to mentioned in pdf-document, statement
SELECT ... COMMENTING.
  extracts additional record from table as first xml-element,
  attributes of which contain comments, specified for each field earlier by 
statement
COMMENT tab/@fld BY "column title";
  this first xml-element contains additional service xml-attribute '_=comment'.
  usually comments are specified for html-tables, instead of html-trees

--

in regard to
http://sql50.euro.ru/sql5.16.4.pdf (slide #18 )
http://html60.euro.ru/site/html60/en/author/looker_eng.htm
http://html60.euro.ru/site/html60/en/author/tabfile_eng.htm (Sending of form)
http://html60.euro.ru/site/html60/en/author/cube_eng.htm    (Sending of form)

  in addition to mentioned in pdf-document, obtaining single xml-element 
(instead of xml-tree)
  with primary key (PK) for DBMS table (specified in some xml-attribute) means 
the following:
*) if this PK is already in DBMS table, then DBMS *updates* fields of record 
with this PK
*) if this PK is not in table (this usually means, that record with this PK was 
already deleted),
  then DBMS *inserts* this xml-element under new PK (obtained from sequence for 
this PK), i.e. PK will be changed during insertion.

--

in regard to
http://sql50.euro.ru/sql5.16.4.pdf (slide #31-32, 39(Another output), 40)
http://html60.euro.ru/site/html60/en/author/looker_eng.htm (for "select '<table 
name="A">'", i.e. extracting HTML )
http://html60.euro.ru/site/html60/en/author/combo_eng.htm
http://html60.euro.ru/site/html60/en/author/tree_eng.htm
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 '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.

  in addition to mentioned in pdf-document,
  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' and
*) by bament <?new/?> (to inform client, e.g. browser, about end of parcel 
[sent by MTD]
   and end of document [sent by "select * from A"] )
P.S.
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).

--

in regard to
http://sql50.euro.ru/sql5.16.4.pdf (slide #173)

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

in regard to
http://sql50.euro.ru/site/sql50/en/author/mtd_eng.htm
http://html60.euro.ru/site/html60/en/author/looker_eng.htm
 
  in addition to mentioned in paper,
  following bament forces to resent data, having appended ascendant sorting by 
field @a2
<?mtd name= event=asc  arg=a2/?>
  following bament forces to resent data, having appended descendant sorting by 
field @a2
<?mtd name= event=dsc  arg=a2/?>
  and following bament forces to resent data, having subtracted sorting by 
field @a2
<?mtd name= event=none arg=a2/?>
 
===other SQL5 additions

  in addition to mentioned in pdf-document, 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 ...'

--

  in addition to mentioned in pdf-document, 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)

--
  
  in addition to mentioned in pdf-document, permissions for field are 
controlled:
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.
  table fields are specified as ¶fieldname in it instead of §fieldname, because 
DBMS does not know,
  what fields are service (like @colspan, @rowspan) or
  are values of properties (like in 
http://html60.euro.ru/site/html60/en/author/chart_eng.htm),
  and what fields contain data for visualization - so mark ¶ acts like comment 
for this xml-attribute

  all master tables are specified for each slave table in it,
  i.e. if database table "S" refers to database tables "M", "N", "P",
  then the following lines are in CSS  
table[name=M] { online:yes }
table[name=N] { online:yes }
table[name=P] { online:yes }
table[name=S] { online:yes; master:M N P }
  all slave tables are specified for each master table after last column
table[name=M]    ¶m20::after               { online:yes; slave:S1; }
table[name=M]    ¶m20::after::after        { online:yes; slave:S2; }
table[name=M]    ¶m20::after::after::after { online:yes; slave:S3; }
table[name=M][_] ¶m20::after               { content:"s1_fk_comment" }
table[name=M][_] ¶m20::after::after        { content:"s2_fk_comment" }
table[name=M][_] ¶m20::after::after::after { content:"s3_fk_comment" }
  
  all accessable database fields (for user "username") are listed in this file 
for
select * from tab;
  except fields, which are primary keys in database, and which are always 
specified (and never ignored) as invisible
¶pk           { display: none}
  if user can update database field, than corresponding xml-attribute will be 
specified as re-writable
t             { display: table-row       }
¶t1, ¶t2, ¶t3 { display: table-cell input} /* read-write */
  if user cannot update database field
REVOKE update ON t FOR user1;
  then corresponding xml-attribute will be specified as read-only
t             { display: table-row       }
¶t1, ¶t2, ¶t3 { display: table-cell      } /* read only */
  fields, calculated upon other fields and don't saved really, specified in CSS 
as calculated
  via @onforminput, implemented in browser as property (pay attention at "§" 
inside braces)
¶t1           { onforminput="value=§t2.value*§t3.value" }
    
  CSS-files are available for editing for DBMS administrator.
  DBMS does not re-write corrections, made manually.



Dmitry (SQL50, HTML60)



-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to