Как в HTML создать новый тэг?

jenua82

Допустим, я хочу чтобы специального вида таблица обозначалась одним тэгом по аналогии с <table>. Причем изменения касаются не только внешнего вида (хватило бы стилей тогда, понятно) но и структуры. Как это можно сделать?

artimon

Не понял, что ты хочешь.
В HTML набор тегов фиксорован, и нисего нового создать нельзя.
В принципе, Mozilla понимает любые теги, т.е. можно написать

<mytag style="color: red">красное</mytag>

и это сработает. Но IE просто проигнорирует этот тег.

jenua82

Но ведь HTML -- это версия SGML и все тэги изначально именно так в нем и определяются, средствами SGML. Или я не прав?

artimon

Нет. Формально никто не запрещает расширять html как угодно. Описывай новый doctype, подходящий для твоих нужд и вперед. Вот только фиг ты браузерам объяснишь, что у тебя не стандартный html.

jenua82

Вот меня и интересует как раз, как ввести новый doctype, и в чем здесь проблема с браузерами.
Я тут немного покопался в нете. Вроде бы XML позволяет вводить новые тэги. Совсем не хочется страницу делать целиком на XML. Они с HTML как-нибудь совмещаются?

ppplva

Храни контент в xml, шаблоном генери из него html.

jenua82

Можешь пример дать или ссылку?

artimon

Вот меня и интересует как раз, как ввести новый doctype, и в чем здесь проблема с браузерами.
В том, что браузеры на самом деле не читают doctype.
Чем тебя не устраиват стандартный html?

jenua82

Как я уже писал. Допустим, содержимое на странице отображается в хитрой рамочке, которая представляет из себя таблицу с картинками. Соответственно, везде где эта таблица, нужно вставлять HTML, ее описывающий. Хочется же один раз описать эту таблицу и далее делать <mytable>Text</mytable>

jenua82

Так мне все равно, что из него генерится. Редактировать структуру как раз хочется в HTML.

artimon

Так и писать, а в конце пройтись парсером по этой страничке, который заменить все твои <mytable> на нормальный код.

jenua82

пройтись парсером по этой страничке

С этого места поподробнее, пожалуйста
Разве парсер не встроен в браузеры?
Я, к сожалению, ухожу. Всем, кто принимал участие, спасибо, и до вечера.

artimon

Нее. Я имею в виду что-нибудь самодельное написаное на perl/php/c/delphi... .
А вообще-то смотри уже в сторону шаблонов (не обязательно xslt) и иже с ними.

6yrop

не обязательно xslt

а что еще?

rid2000

Но ведь HTML -- это версия SGML

Ничего подобного !

artimon

http://www.parser.ru/ -- например
http://smarty.php.net/ -- еще

dedwowan

Выхода три
1. Написать жаваскриптовые макросы
2. Юзать XML и XSLT
3. Найти нормальный парсер шаблонов для того языка, который ты юзаешь (Smarty, Velosity)
PS. HTML это подмножество SGML
PSS Большинство подобных проблем решается генерации странички, т.к. те же картинки все равно выводятся в цикле серверным скриптом, а ты просто в этот цикл вставляешь нужный HTML-код
Я надеюсь ты не юзаешь чистый HTML? Если да, то все вышеперечисленные методы тебе не помогут. Потому что даже в случае с JS тебе придется писать немаленькие кусок кода и его потом форматировать.

jenua82

Тебе цитату дать?

jenua82

Да нет, я на PHP делаю. Просто не хотелось вот так красиво и читабельно. Видимо, заведу функцию типа insertTableHereAndNow($content правильно мыслю?

dedwowan

Правильно
А вообще разрюхай smarty
Для пхп клевая вещь

jenua82

Всем большое спасибо. Буду разрюхивать

rid2000

XML - является сужением SGML...
HTML - является некоторой "реализацией"...

jenua82

Тебе не кажется, что ты умничаешь и к словам придираешься?

rid2000

Нет...
Я просто хотел тебе помочь в понимании...
Почему? Потому что если бы ты понимал, то так бы не писал(тебе бы в голову не пришло)...
PS: Сегодня HTML используется как средство визуализации для "броузера"... На нем "чистом" не пишут... Их генерируют другими средствами...

jenua82

В таком случае спасибо
И еще вопрос. Можно ли при помощи стилей задать таблице cellspacing и cellpadding, и как это сделать?

rfgbnfy

padding-left
Атрибут определяет отступ от содержимого элемента до обрамления слева.
Синтаксис: селектор {padding-left: 0}
Пункты.
Синтаксис: селектор {padding-left: 12pt}
Дюймы.
Синтаксис: селектор {padding-left: 12in}
Сантиметры.
Синтаксис: селектор {padding-left: 12cm}
Пиксели.
Синтаксис: селектор {padding-left: 12px}
padding-right
Атрибут определяет отступ от содержимого элемента до обрамления справа.
Синтаксис: селектор {padding-right: 0}
Пункты.
Синтаксис: селектор {padding-right: 12pt}
Дюймы.
Синтаксис: селектор {padding-right: 12in}
Сантиметры.
Синтаксис: селектор {padding-right: 12cm}
Пиксели.
Синтаксис: селектор {padding-right: 12px}
padding-top
Атрибут определяет отступ от содержимого элемента до обрамления сверху.
Синтаксис: селектор {padding-top: 0}
Пункты.
Синтаксис: селектор {padding-top: 12pt}
Дюймы.
Синтаксис: селектор {padding-top: 12in}
Сантиметры.
Синтаксис: селектор {padding-top: 12cm}
Пиксели.
Синтаксис: селектор {padding-top: 12px}
padding-bottom
Атрибут определяет отступ от содержимого элемента до обрамления снизу.
Синтаксис: селектор {padding-bottom: 0}
Пункты.
Синтаксис: селектор {padding-bottom: 12pt}
Дюймы.
Синтаксис: селектор {padding-bottom: 12in}
Сантиметры.
Синтаксис: селектор {padding-bottom: 12cm}
Пиксели.
Синтаксис: селектор {padding-bottom: 12px}

artimon

Злой ты
Уж лучше сразу сюда: http://www.w3.org/TR/REC-CSS2/
А конкретнее сюда: http://www.w3.org/TR/REC-CSS2/tables.html и сюда: http://www.w3.org/TR/REC-CSS2/box.html

artimon

Можно ли при помощи стилей задать таблице cellspacing и cellpadding, и как это сделать?
Можно.

table { border-spacing: 10px; } /* это cellspacing */
table td { padding: 5px; } /* это cellpadding */


http://www.w3.org/TR/REC-CSS2/tables.html#propdef-border-spacing
http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding
И гораздо больше можно.

jenua82

Сделал, как ты говоришь. Две такие таблицы
<table>
<td>&nbsp;</td>
</table>
<table cellpadding="0" cellspacing="0">
<td>&nbsp;</td>
</table>
значительно отличаются друг от друга по размерам

jenua82

Это не то.

artimon

Ну ты циферки другие поставь вместо 10px и 5px.

jenua82

А я именно и поставил. 0 и 0

artimon

Ах, да. IE не понимает border-spacing.
Если тебе нужно просто именно ноль, то можно написать border-collapse: collapse вместо border-spacing: 0

rfgbnfy

а border-style: none не катит ?

jenua82

Не, не катит. Сам border нужено рисовать.

jenua82

Нет блин, не катит collapse

artimon

А при чем тут border-style?

artimon

Страничку покажи.

artimon

border-collapse:collapse;
А еще неплохо бы написать <html>, <head> и прочее...

jenua82



Огромнова спасиба!
А еще неплохо бы написать <html>, <head> и прочее

Здесь, как ты сам понимаешь из названия файла, совершенно незачем.
Оставить комментарий
Имя или ник:
Комментарий: