| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > XML, XSL > Смена дизайна сайта |
| Автор: koss 17.11.2005, 22:17 |
| Привет всем! Дано: 1. Документ person.xml. 2. Две таблицы стилей: pers1.xsl и pers2.xsl. 3. Две CSS таблицы: style1.css и style2.css. Допустим, в настоящий момент есть связка: person.xml->pers1.xsl->style1.css. Т.е. на экране я вижу страничку, оформленную в одном стиле. Вопрос: Как реализовать переход к другому оформлению странички (person.xml->pers2.xsl->style2.css) в "прямом" эфире. Т.е. пользователь кликает к-нить кнопку и происходит смена дизайна (а контент остается)? Я, собственно, не в курсе, как надо делать в идеале, поэтому css+xsl+xml выбрал по своему усмотрению. Т.е. м.б. существует более красивое решение поставленной задачи. В любом случае рассчитываю на помощь... Заранее спасибо! |
| Автор: 3,14 18.11.2005, 10:27 | ||||||||
| Нужно чтоб person.xml генерировался каким-то скриптом. Пользователь передаёт информацию серверу какой интрефейс ему нужен (пусть это будет пар-р skin_id): skin_id = 0 (по умолчанию) - person1.xsl skin_id = 1 - person2.xsl скрипт смотрит если пришёл skin_id = 1, вставляет в начало person.xml такую строку:
Иначе:
Теперь о css: В person1.xsl ставишь строчку:
ну а в person2.xsl соответсвенно:
|
| Автор: koss 18.11.2005, 12:21 |
| Спасибо! Будем ваять скрипт... P.S. Кстати, а рационально ли решать такую проблему средствами XML? Интересно было бы узнать мнение спецов... |
| Автор: 3,14 21.11.2005, 11:17 |
| koss, рационально, 1) трафик экономиться 2) можно прикрутить GUI клиентовый Но емть и проблемма: не всеми браузерами поддерживается. |
| Автор: koss 23.11.2005, 16:07 | ||||||||||
| В общем получилась такая штука: 1. Файл index.html:
2. Файл person.xml:
В html-е есть две функции, которые при нажатии изменяют элемент <DOB>. Используется объектная модель xml документа. В общем, это как пример, я пытаюсь выразить идею вопроса. Вопрос: Каким образом (используя объектную модель xml документа), получить доступ к строке
Хочу выводить в окно браузера непосредственно xml документ, который связан с таблицами xsl (для своего дизайна - своя), которые выглядеть должны так: persons.xsl
persons2.xsl
И, когда чел заходит на мою страничку, он видит сайт в одном оформлении (которое я установил по умолчанию). Потом он жмакает кнопку и выполняется функция смена дизайна, заменяется строчка в xml документе и изменяется разметка, оформление, цвета, а сам контент не подгружается... Подскажите плиз... |
| Автор: 3,14 24.11.2005, 12:40 | ||
Что за обьектная модель? |
| Автор: koss 24.11.2005, 20:39 | ||||
| Объектная модель xml документа - Document Object Model (DOM). DOM cостоит из группы программных объектов, представляющих различные компоненты xml-документа. DOM хранит записи в иерархической, древовидной структуре, отражающей иерархическую структуру XML-документа. И вы можете использовать ее для доступа к любым компонентам XML-документа, включая элементы, атрибуты, инструкции по обработке, комментарии... В примере, который я привёл выше, я с помощью функции:
Сначала подключаю xml. Потом, получаю доступ к узлу DOB. Т.е.: сначала мы двигаемся из коревого элемента к первому потомку (childNodes(0)) первого уровня вложенности. Это узел <person> с именем Алина. Находясь в этом узле получаю доступ к узлу DOB: childNodes(2). А потом пользуюсь свойством text и меняю текстовое содержимое данного элемента на YES!. Причём, изменения не происходят в самом файле. Потом в переменную title помещаю всё содержимое первого потомка и строками
задаю связь с xml, и содержимое переменной title связываю с элементом [b]<span>/[b]. Я пользовался мануалами: 1. http://www.realcoding.net/article/view/2050. 2. http://gberman.narod.ru/xmllections/dom/start.htm. Но нигде не сказано, как получить доступ, используюя механизм DOM, к строке, в которой устанавливается связь с xsl... |
| Автор: 3,14 28.11.2005, 13:16 | ||
Вроде нужно использовать
Если нужно подробнее спроси в форуме по JavaScript Хотя на мой взгляд генерировать XML на стороне клиента по крайней мере странно, обычно XML фсё же формируют на стороне сервера, иначк просто смысл теряется. |
| Автор: koss 28.11.2005, 14:53 |
| Нет. Документ уже существует, он лежит на сервере. Клиент его получает полностью. Один раз, при первом посещении. Потом делает с ним, что хочет: меняет оформление (для печати, или разные стили отображения в браузере), сортирует, ищет, меняет отображаемые поля и т.д. Т.е. не происходит постоянного обмена межу С и К: запрос-обработка-ответ. Экономится трафик и снижается нагрузка на сервер. Клиент (при желании) просто дополучает доп. инфу в виде xsl. И смысл не теряется. Как раз наоборот, используем одну из особенностей XML... Разве нет? |
| Автор: 3,14 29.11.2005, 10:12 |
| Нет смысла использовать XML, можно просто обойтись JavaScript и получить всё тоже самое. Основная идея использования XML + XSLT разделить офрмление и содержание, у тебя же вроде этого не происходит. |
| Автор: koss 29.11.2005, 16:49 |
| Да ладно! XML + XSLT + JavaScripts - вот динамика в чистом виде + независимость контента от дизайна... |
| Автор: Ignat 29.11.2005, 17:33 | ||
+ серверные скрипты (на выбор) |