Jump to content
  • 0

Использование сущностей типа &mycolor;


AlexAdmin
 Share

Question

Три разных заказчика сознательно захотели использовать один и тот же дизайн на своих страницах. Надо только поменять некоторые цвета и ширину элементов. Теоретически вроде бы можно сделать так:

Задаём определяемую сущность:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html
<!Entity mycolor #999999>
>

и дальше в тэгах


<table color=&mycolor;>

и всё ДОЛЖНО работать, но НЕ работает.

Правильного синтаксиса ни для DocType, ни для Entity я не нашел (потому что не знаю, где искать). Google дал кучу ссылок, но всё на XML.

Вот и подскажите, плиз, как можно задать в одном месте документа (вначале) нужные мне сущности, чтобы потом их направо-налево использовать. Те же самые цвета используются в 5-8 местах (стилях), ширины - в 2-3х, размеры шрифтов - в 10-20. CSS не помогает, потому как нет каскада.

Заранее спасибо!

Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

Что-то мне подсказывает, что это и не должно работать.

Придется что-то городить с классами.

Но если разберетесь с этим способом - будет весьма интересно узнать результат.

Link to comment
Share on other sites

  • 0
Религия не позволяет. Если для каждого свойства назначать свой класс, то смысл в css отпадает.

А для каждого свойства назначать свою переменную и потом составлять из этих переменных инлайновые стили религия позволяет?

Link to comment
Share on other sites

  • 0
А для каждого свойства назначать свою переменную и потом составлять из этих переменных инлайновые стили религия позволяет?

не совсем понял, что значит инлайновые.

проверялся вариант с препроцессором/кодогенератором/парсером, но он оказался багоёмким. дизайнер всё равно выдаёт хтмл+css. потом перепарсивать в шаблоны, и из шаблонов генерить окончательный код - дорого и глючно.

сейчас делается обработка строкозаменителем - один код цвета заменяется на другой скриптом. Гораздо сложнее скрипт получается для стандартных ширин и высот.

попробовали сделать через переменные JS и использование их в expression в CSS - тоже не получилось. не принимает.

после всех этих перетрахов остановились на варианте с сущностями, который успешно работает в XML, но почему-то не хочет работать в HTML. Вот и хочется узнать, почему.

Хотя, если мы не увидели какого-то другого относительно простого варианта - подсказывайте. Может, на нём и остановимся.

Link to comment
Share on other sites

  • 0

Это не должно работать в вашем случае. В вашем случае должен работать CSS. Для каждой единицы оформления, скорее всего, придется создать класс, но это будет более верно (даже с точки зрения религии, которая вам не позволяет так сделать), чем то, что вы пытаетесь реализовать.

Почему, кстати, class="colorRed" - идеологически неверно, а color="&redColor;" - верно?

Класс даже в этом случае предпочтительнее, хотя он тут и используется несемантично, но все же применение класса впоследствие позволит использовать его, возможно, для других целей, в то время как color="blahblahblah" - может влиять только и только на цвет, включая непосредственно оформление в разметку.

Не надо изобретать велосипед, все уже давно изобрели.

Link to comment
Share on other sites

  • 0
Это не должно работать в вашем случае. В вашем случае должен работать CSS. Для каждой единицы оформления, скорее всего, придется создать класс, но это будет более верно (даже с точки зрения религии, которая вам не позволяет так сделать), чем то, что вы пытаетесь реализовать.

Почему, кстати, class="colorRed" - идеологически неверно, а color="&redColor;" - верно?

Во-первых, потому что не class="colorRed", а class="oldclass colorRed"

Во-вторых, потому что во втором случае не придётся переписывать html и php. Все изменения будут касаться только css.

В-третьих, потому что вторая заповедь программиста звучит так: "Работает - не исправляй!". А я истинно верующий программист.

Link to comment
Share on other sites

  • 0
А я атеист.

Сочуствую. Ибо вера дана для тех случаев, когда истина проверена годами и поколениями, изрядно полита потом и кровью, но которую нельзя проверить на опыте своём. Ибо опыт сей может стать последним в жизни твоей (или твоей программы). Аминь! :D

Link to comment
Share on other sites

  • 0
Сочуствую. Ибо вера дана для тех случаев, когда истина проверена годами и поколениями, изрядно полита потом и кровью, но которую нельзя проверить на опыте своём. Ибо опыт сей может стать последним в жизни твоей (или твоей программы). Аминь! :D

Вера - удобныйй инструмент управления массами...

Link to comment
Share on other sites

  • 0
Вера - удобныйй инструмент управления массами...

В том числе. И широко используется наряду с инструкциями, кодексами, стандартами. Классический пример подобной веры - инстукции по технике безопасности и мастер-классы великих актёров.

А указанную в сабже проблему я решил туповато, но решение работает.

Во все интересующие меня параметры добавлены комменты вида

color: #AB5673/*mycolor1*/;

border: ... 1px/*borderw1*/ ...;

В конец файла добавлены регэкспы для строкозаменителя, чтобы потом не сочинять.

Неправильно это, но лучше пока ничего нет.

Планирую подобный вопрос позадавать в других форумах.

Link to comment
Share on other sites

  • 0
В-третьих, потому что вторая заповедь программиста звучит так: "Работает - не исправляй!".

Чтобы эта заповедь имела смысл - надо писать грамотный код. В принципе, если для двух сайтов нужно одинаковое оформление, это достигается именно общей таблицей стилей. Только, конечно, если это не было предусмотрено заранее, то либо таблица будет изрядного размера, либо код придется менять.

Встраивание оформления в разметку - не лучшая идея.

Кстати, у вас что-нибудь наконец получилось?

Link to comment
Share on other sites

  • 0
Чтобы эта заповедь имела смысл - надо писать грамотный код. В принципе, если для двух сайтов нужно одинаковое оформление, это достигается именно общей таблицей стилей.

Сайтов не 2 а уже 5 - один исходный и 4 наследника. Заказчиков заинтерсовало удобство работы с такой разметкой. Хотя, ясно дело, ещё есть над чем работать (http://avto-puls.ru)

Встраивание оформления в разметку - не лучшая идея.

Кстати, у вас что-нибудь наконец получилось?

Более того - невозможная. Сейчас заказчики хотят один раз платить по 2/5 за 5 работ сразу. Экономия заметная получается, мой доход удваивается. Если встраивать оформление в код - экономии не будет.

С Doctype и сущностями - ничего. Не работает!

Пришлось написать батник для заливки, который меняет CSS на лету.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy