Перечень статей   choose language


eHTML: теги с произвольными названиями



Соглашения

тегатрибутсвойствостиль
новые html-терминыlinealingpointdefault
значения новых html-терминовsideromb
старые html-терминыtdidlist
значения старых html-терминовcircle
коммуникационный xmlsoundsyncpower
значения коммуникационного xmlnouser
клавиатурные и мышиные командыenter

Идея

Какие языки нужно знать, чтобы визуализировать базу данных? SQL, потому что промышленный стандарт баз данных. HTML, потому что промышленный стандарт визуализации. Что еще? Больше ничего.

Представьте, что запрос в базу данных вернул вам дерево, состоящее из произвольных (неизвестных браузеру) тегов (например, названия тегов совпадают с названиями таблиц базы данных). Я предлагаю наделить любые теги свойствами и тем определить их отображение в браузере (назовем такой html расширенным, extended html, eHTML). И перечислять свойства произвольных тегов в css-файле (это проще, чем писать для них xsl-файл). Старые, уже известные html-теги нужно рассматривать как html-теги с заранее предопределенными значениями свойств - но таким же набором свойств могут обладать и другие теги.


Пусть, например, браузеру встретился незнакомый тег "anytag" с текстом "internal text" внутри.

предыдущий текст
<anytag> внутренний текст </anytag>
последующий текст
И пусть в css-файле указано
anytag {
  color: blue;
  font: italic bold;
}
Современный браузер игнорирует тег и изображает просто предыдущий текст внутренний текст последующий текст
а должен изображать предыдущий текст внутренний текст последующий текст

Оси визуальных свойств как часть базиса

Если до и после какого-либо тега должен произойти переход на новую строку, для такого случая соответствующее свойство все еще не названо. Пусть это будет newstring со значениями yes и no. Значением yes обладают ранее известные теги p, br, hr, table, caption, tr.

Выстраивание в колонки может быть выполнено автономно для разных частей документа и порождать разные ширины колонок в каждой части. Отделение частей документа друг от друга должно быть выполнено каким-либо тегом со специальным свойством. Пусть таким свойстваом будет kind=table. Из ранее известных тегов этим свойством обладал только тег table.

Таким образом, если определен css-файл

x { kind: table }
y { newstring: yes }
то браузер расположит на странице содержимое тегов <x> <y> </x> так, как если бы это были теги <table> <tr> </table>

Все теги, не зависимо от их названия, непосредственно вложенные в тег с kind=table, интерпретируются как теги с данными. Может одновременно присутствовать несколько разноименных тегов с данными. При этом имя тега и имя его класса (значение атрибута class) всегда совпадают: если у тега определен атрибут class, то имя тега игнорируется; если этот атрибут не определен (отсутствует), то имя тега есть имя класса.


Для симметрии позволим заполнять документ "по-колонно", для чего для тегов table, tbody, tfoot, thead, table-dim введем свойство type со значениями row (заполнение по-строчно, значение по умолчанию) и column (заполнение по-колонно). Свойство type=column у тега table-dim приводит к транспонированию.


Аналогично должно быть выполнено отделение частей документа друг от друга для построения списков и линий - пусть это будут теги со свойствами kind=list и kind=line.

Все теги, не зависимо от их названия, непосредственно вложенные в тег с kind=list, интерпретируются как элементы списка. Может одновременно присутствовать несколько разноименных тегов-элементов списка.

Все теги, не зависимо от их названия, непосредственно вложенные в тег с kind=line, интерпретируются как элементы линии. Может одновременно присутствовать несколько разноименных тегов-элементов линии.


Свойство kind определяет, какие еще свойства существуют у данного тега.

Присвоение этому свойству любого значения, в т.ч. и того, которое содержалось в нем ранее, сбрасывает в "null" все остальные свойства тега.

Это свойство может иметь более одного значения одновременно.

Оси семантических свойств как часть базиса

Для поисковых роботов предназначено свойство semantics со значениями (свойство может иметь несколько значений одновременно): address (страна, сайт, электронная почта, телефон - теги address, cite); idea (dfn), important (em, strong), quote (backquote, q); example (code), input (kbd), output (samp), rating, price, author, date. Свойство semantics не описывает аббревиатуру, т.к. ее легко обнаружить по тому ее качеству, что все ее буквы - прописные.

Пополнение перечня значений

Специальное значение звездочка * атрибутов colspan, rowspan означает использование всех оставшихся колонок (или строк соответственно) как одной.

Выражение тегов через свойства

Теги в таблице ниже, для которых вторая колонка таблицы не заполнена, не выражаемы через свойства. Но их (например, тег object) можно применять как таковые.

Внутри тега select вместо тегов option и optgroup могут применяться теги ti.


Соответствия между html-тегами и html-свойствами
html-тег свойства xml-тега свойства
обрамляющего xml-тега,
т.е. тега [-1]-го уровня
свойства
xml-тега [-2]-го уровня
<a href= > kind:anchor; src:/dir/filename;
<a name=A > kind:mark; id:A;
<abbr>
<address> font-type:oblique; semantics:address;
<b> font-weight:+100%;
<backquote> semantics:quote;
<big> font-size:+30%; font-weight:+100%;
<body> kind:body;
<br> newstring:yes;
<caption> newstring:yes; colspan:* ; kind:table;
<code> font-family:courier; semantics:example;
<contour> kind:contour;
<cite> font-type:oblique; semantics:address; src:www.com;
<def> font-type:oblique; semantics:idea;
<del>
<div>
<dd> padding-left:10mm;
<dl>
<dt> padding-left:0;
<em> font-type:oblique; semantics:important;
<form> kind:form;
<h1> text-align:left; font-size:+100%;
<h2> text-align:left; font-size:+50%;
<h3> text-align:left; font-size:+20%;
<h4> text-align:left;
<h5> text-align:left; font-size:-20%;
<h6> text-align:left; font-size:-40%;
<head> kind:head;
<hidden> kind:hidden;
<hr> kind:hr;
<i> font-type:oblique;
<img src= > <link src= >
<input type=button> kind:anchor; src:/dir/filename; look:button;
<input type=checkbox> kind:checkbox;
<input type=file> kind:file;
<input type=hidden> <hidden>
<input type=image> kind:image;
<input type=password> kind:password;
<input type=pic> kind:pic;
<input type=radio> kind:radio;
<input type=reset> kind:reset;
<input type=select> kind:select;
<input type=submit> kind:submit;
<input type=text> <input type=textarea>
<input type=textarea> kind:area;
<ins>
<interface> kind:interface;
<kbd> font-type:courier; semantics:input;
<label>
<legend>
<li>   kind:list / line;
<line> kind:line;
<link href= > kind:link; src:/dir/filename;
<map name= >
<menu> kind:menu;
<module> kind:module;
<object data= >
<ol> <ul>
<optgroup>
<option>
<p> newstring:yes; indent:N;
<pre> font-family:courier; white-space:pre;
<q> semantics:quote;
<samp> font-type:courier; semantics:output;
<small> font-size:-50%;
<span>
<strong> font-weight:+100%; semantics:important;
<sub> vertical-align:sub;
<sup> vertical-align:super;
<table> kind:table;
<table-dim> kind:table-dimensional;
<tree> kind:tree;
<ti> kind:ti;
<tbody> kind:tbody;
<tc> type:column; newstring:yes; kind:table/tbody/tfoot/thead;
<tfoot> kind:tfoot;
<thead> kind:thead;
<td>   newstring: yes; kind:table/tbody/tfoot/thead;
<th> font-weight:+100%; newstring: yes; kind:table/tbody/tfoot/thead;
<tr> type:row; newstring:yes; kind:table/tbody/tfoot/thead;
<tt> font-family:courier;
<u>
<ul> kind:list;

Ячейки таблицы могут быть текстовыми виджетами (полями ввода) непосредственно (отредактировал текст в ячейке таблицы - таблица автоматически переформатировалась). При этом возможно копирование из буфера обмена (clipboard) сразу в несколько ячеек таблицы.

Значения всех свойств распространяются на все под-теги. Следующие два css-файла означают одно и то же.

tag {
 kind: table;
}
sub_tag {
 newstring: yes;
}
sub_sub_tag {
 kind: area;
}
tag {
 kind: table area;
}
sub_tag {
 newstring: yes;
}
sub_sub_tag {

}

Некоторый тег может быть меткой и ссылкой одновременно.

anytag {
 kind: mark link;
}

Расширенный шаблон

Тег может соответствовать шаблону более чем в одном атрибуте.

<tag class=x attr1=y> {
  attr2=z
}
tag1.class1 tag2.class2 {}
=
<tag1 class=class1> <tag2 class=class2> { }

Резюме

Атрибуты
тег атрибут список возможных значений
link type vector
Новые свойства
свойствозначение по умолчаниюсписок возможных значений
kind  anchor, checkbox, contour, file, form, hidden, hr, image, line, link, list, mark, password, radio, reset, table, table-dimensional, tbody, tfoot, thead, ti, tree, area, select, submit
newstringno no, yes
semantics  address, idea, important, quote, example, input, output
typerow row, column



html60author



Перечень статей   choose language


Используются технологии uCoz